2

コマンドライン PHP を書き込もうとしています - PHP を使用してコマンドラインからファイルに書き込むコツはありますか? このファイルは testcl.php という名前で、次のように実行します。

/usr/bin/php -f /var/www/html/media/testcli.php

$myFile = "test.txt";
$fh = fopen($myFile, 'a');
fwrite($fh, "batman2");
fclose($fh);
echo "batman";

バットマンのエコーステートメントが機能するので、ファイルが実行されていることがわかりますが、何らかの理由で test.txt に書き込まれていません。testcli.php にアクセスすると、text.txt が正常に書き込まれるため、いくつかのトリックが欠けていると思います。

4

5 に答える 5

6

CWD の問題があると思われます:test.txtは相対パスであるため、スクリプトの呼び出し中に立っている場所に対して計算されます。これは、シェルと Web サーバーで異なる可能性があります。試す

$myFile=dirname(__FILE__).'/test.txt';

権限の問題である可能性もあります。websrver ディレクトリに対する書き込み権限があることを確認してください。

于 2012-06-27T03:52:33.363 に答える
2

おそらく許可の問題です。使用してみてください:

sudo /usr/bin/php -f /var/www/html/media/testcli.php

于 2012-06-27T03:51:09.373 に答える
1

PHP コードを実行する前に、/var/www/html/media/ に cd します。また、現在のユーザーがそのディレクトリに書き込めることを確認してください/

于 2012-06-27T03:50:11.837 に答える
1

2 つの可能性:

  • Web サーバーから PHP を実行すると、現在のディレクトリがスクリプトを含むディレクトリに設定された状態で実行されます。コマンド ラインから PHP を実行すると、作業ディレクトリはそのまま残ります。出力ファイルのcwdを確認してください。

  • そのファイルが存在しない場合、php-cli を実行しているユーザーが現在のディレクトリに書き込む権限を持っていない可能性があります。

于 2012-06-27T03:51:35.360 に答える