2

テキストファイルの書き込み操作を含むphpスクリプトがあります。ブラウザからスクリプトを実行すると、そのURLを使用してスクリプトにアクセスすると、正常に機能し、ファイルが完全に書き込まれます。しかし、コマンドを使用して端末から同じスクリプトを実行すると、スクリプトは実行されますが、ファイル操作は実行されません。なぜこれが起こるのかわかりません。ばかげたことかもしれませんし、何かキーなどを紛失しているかもしれませんが、今のところそれを理解することはできません.

これが私が使用しているコマンドです

/path/to/php -f /path/to/file

テキストファイルに書き込むコードは次のとおりです。

$myFile = "filename.txt";
$fh = fopen($myFile, 'a+') or die("can't open file");
$str = "file content here";
fwrite($fh, $str);
fclose($fh);

助けてくれてありがとう。

4

4 に答える 4

3

これは異なるパスを使用している可能性があります。たとえば、ターミナルから実行すると、コマンドを実行したときのディレクトリで「filename.txt」が検索されますが、ブラウザから実行すると、PHP ファイルと同じディレクトリが検索されます。

これを修正するには、アクセスしているファイルのファイル名だけでなく、フル パスを使用します。

于 2012-06-08T12:51:45.533 に答える
1

これはおそらく許可の問題です。ブラウザからスクリプトを実行すると、Webサーバーのクレデンシャルを使用してスクリプトが実行されます。

ファイル/ディレクトリに正しい権限を設定するか、Webサーバーのユーザーとしてスクリプトを実行してください。

于 2012-06-08T12:41:42.527 に答える
1

パスを確認し、 http: //www.example.com/filename.ext の代わりに /var/www/example.com/filename.ext からのパスを使用します。

于 2012-06-08T12:47:35.900 に答える
0

ilanco の言うとおりです。これはおそらく許可の問題から来ています。Unix では、これを解決する 1 つの方法は次のとおりです。

1. まず、このファイルの所有権をコマンドライン ユーザーに与え、グループを Web サーバーに設定します。たとえば、サーバーが apache の場合、次のコマンドを実行します。

chown your_username:www-data filename

www-dataApache Web サーバーのデフォルト グループです。このコマンドは root として実行する必要があります。

2. 次に、このファイルを書き込む権限をグループに付与します。

chmod g+w filename
于 2012-06-08T12:54:30.370 に答える