2011-10-24 26 views
0

我在過去幾天一直在研究一個本地應用程序,並且我注意到我調用外部程序的一個'exec()'函數沒有正確啓動。經過進一步調查,很明顯該程序確實執行了,但由於使用'file_get_contents()'的重要行沒有檢索到指定文件的內容,所以它會過早退出。Bizarre file_get_contents()行爲與純文本文件和沒有擴展名?

該文件是一個沒有擴展名的純文本文件。我猜,'file_get_contents()'將文件視爲一個目錄,因爲沒有擴展名?這很奇怪,因爲如果我從網絡瀏覽器手動執行相同的程序,一切都很完美。

下面是清晰的例子線 -

while(file_get_contents('plaintextfile') == "something"){ 
/// Do This 
    } 

上述工作,當我參觀/program.php從Web瀏覽器,但像這樣調用它時它給了我一個文件/文件夾就好未找到'plaintextfile'錯誤。

exec('php /program.php', $output); 

foreach($output as $output){ 
print $output . "<br>"; 
} 

在此先感謝任何能夠闡明這種情況的人。我真的很困惑......

+1

我懷疑你的FS根目錄下有program.php文件。嘗試./program.php(注意斜線前的) – erenon

+0

該文件位於相對於該腳本的位置? –

+0

哦,我只是簡化了這個職位。我在我的程序中有完整的路徑,它是/ Library/WebServer/Documents/data/bla/bla/etc ... – user974634

回答

1

從瀏覽器執行並由命令行執行(在exec()調用中)的PHP可能使用不同的php.ini配置,並可能有不同的文件搜索路徑。最好的行動方式是提供plaintextfile的完整路徑。

if(!file_get_contents('/path/to/plaintextfile')){ 
    // file couldn't be read 
} 
+0

哦,哇。我認爲完整的路徑對於實際執行程序是非常重要的,一旦php找到了program.php,它會將它視爲相同,無論它是如何被調用的。這工作! – user974634