2011-10-24 18 views
0

私はここ数日間ローカルアプリケーションを開発していました。私は、外部プログラムを呼び出すための私の 'exec()'関数の1つが正しく起動しなかったことに気付きました。さらに調査したところ、プログラムが実行されたことは明らかでしたが、 'file_get_contents()'を使用して重要な行が指定されたファイルの内容を取得しなかったため、早期に終了しました。プレーンテキストファイルと拡張子なしの奇妙なfile_get_contents()ビヘイビア?

ファイルは拡張子のないプレーンテキストファイルです。私は 'file_get_contents()'は拡張子がないので、ディレクトリとしてファイルを扱っていると思いますか? Webブラウザから同じプログラムを手動で実行すると、すべてが完全に機能するので、奇妙です。

ここでは分かりやすくするための例のラインだ - 私は、Webブラウザから/program.phpを訪問したときに

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

上記はうまく動作しますが、このようにそれを呼び出すとき、それは私のファイル/フォルダが見つかりませんを与えます'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

PHPはブラウザから実行され、コマンドライン(exec()コール)で実行されると、異なるphp.ini設定を使用する可能性があり、異なるファイル検索パスを持つ可能性があります。最良の処置は、plaintextfileへのフルパスを供給することです。

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

ああ、うわー。私は完全なパスが実際にプログラムを実行するために重要であると思ったし、phpがprogram.phpを見つけたら、それはどのように呼び出されたかにかかわらず同じように扱われます。これはうまくいった! – user974634

関連する問題