2011-07-01 54 views
0

在Ubuntu中使用PHP cli時,我得到了apache作爲web服務器,我無法讀取我在瀏覽器中使用它的文件。 而有關錯誤,它只是說明不了什麼,下一個像我剛纔使用該代碼爲我的測試目的:php cli閱讀文件以及如何解決它?

<? 
$handle = fopen("testFile.txt", "r"); 
if ($handle) { 
    while (($buffer = fgets($handle, 4096)) !== false) { 
    echo $buffer; 
    } 
    if (!feof($handle)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
if(!is_readable($handle) 
{ 
die("Not readable"); 
} 
fclose($handle); 
} 
?> 

我該如何解決呢?

編輯:

取出後 '@' 的fopen之前,我得到了以下錯誤

的fopen(TESTFILE.TXT):未能打開 流:在 沒有這樣的文件或目錄/第2行上的var/www/log/ka.php

+2

好吧,如果你把一個'fopen'之前的'@',顯然不會報告任何錯誤。 – zneak

+0

看看編輯 – kritya

回答

5

當您通過CLI運行腳本時,它使用shell的工作目錄,與文件目錄相反(Apache作爲當前目錄) 。這對您很重要,因爲您的fopen調用取決於相對路徑;相對路徑相對於工作目錄解決,而不是腳本。

爲了讓您的腳本行爲類似於它與Apache做,你要麼需要cd /var/www/log運行php命令之前,或者在你的PHP腳本的開頭補充一點:

chdir(dirname(__FILE__)); 
+0

Yup工作:D感謝:D:D – kritya