2014-01-17 17 views
4

我想學習php & mySQL和我購買了一本書(php & mySql:缺少的手冊2edition )未定義常量STDIN的使用 - 假設'STDIN'在第5行C: wamp www study sayHello.php上

我在win8 64bit機器上安裝了Wampserver2.4。

服務器配置

Apache的版本:2.4.4
PHP版本:5.4.12

在第一課中我得到這個錯誤:(

Notice: Use of undefined constant STDIN - assumed 'STDIN' in C:\wamp\www\study\sayHello.php on line 5 

這是PHP代碼上文件「sayHello.php」

<?php 

echo "Hello there. So I hear you're learning to be a PHP programmer!\n"; 
echo "Why don't you type in your name for me:\n"; 
$name = trim(fgets(STDIN)); 

echo "\nThanks, " . $name . ", it's really nice to meet you.\n\n"; 

?> 
+0

什麼是您的腳本中的STDIN? –

+0

你的代碼在Rikesh和Abhik提到的'CLI' –

+0

中可以正常工作,我添加了「define('STDIN',fopen(」php:// stdin「,」r「));」問題解決了 – user3206343

回答

20

只要定義在文件的頂部STDIN不變,

define('STDIN',fopen("php://stdin","r")); 
0

It看起來像你試圖使用一個不存在的稱爲STDIN的常量。

STDIN用於使用fopen獲取當前打開的流。

$file = fopen('file/path'); 

$name = trim(fgets(STDIN)); 

使用STDIN沒有當前打開的流將無法工作。

我也認爲STDIN只適用於cli,但並非100%確定。如果是這種情況,請使用與上述相同的代碼,但將STDIN替換爲$file;

2

嘗試在你的文件的頂部添加此

define('STDIN',fopen("php://stdin","r")); 
0

如果你希望你的代碼以正確的「標準輸入被執行「恆你有兩個選擇:

# php -r "fgets(STDIN);" 

或:

# gedit file.php //make a file with <?php fgets(STDIN); ?> 
# php file.php // execute the file 

另一種選擇:

#php 
<?php 
     fgets(STDIN); 
?> 
//click on ctrl+d 

都不行!如上所述,您可能必須在代碼中定義「STDIN」常量。

相關問題