web-dev-qa-db-ja.com

/ var / www / htmlにファイルを作成できません

Ubuntuバージョン14.04を実行していますが、/var/www/htmlに保存されているlocalhostのphpファイルをホストするように設定されたApache2サーバーがあります。

私のPHPスクリプトの1つで次のコードを実行しようとすると

<?php
$file = fopen("test.txt","w");
fwrite($file,"Hello World. Testing!");
fclose($file);
?>

Test.txtという名前の/ var/www/htmlに保存されているファイル、または検索後にコンピューターのどこにもファイルが見つかりません。ファイル名はまだ存在していません。Sudo nautilus内のphpファイルを編集するために必要な権限がないため、/var/www/htmlを使用しています。 /var/www/htmlフォルダーにファイルが表示されないのはなぜですか。ファイルが作成されるように修正するにはどうすればよいですか?

1
John Lee

サーバーでphpファイルをテストしたところ、正常に動作します。

問題は、ユーザーwww-dataがそのフォルダーへの書き込み権限を持っていないことです。

実際にそのユーザーがそのフォルダーへの書き込み権限を持っていない場合、ファイル/var/log/Apache2/error.logにエラーメッセージが表示されます。

最後のエラーを確認するには、次を実行します

tail -n 15 /var/log/Apache2/error.log

たとえば、「test.txt」の代わりに「/test.txt」(/に書き込み、rootのみが可能)を置くと、ログファイル内に次のエラーが表示されます。

[:error] [pid 7505] [client 127.0.0.1:47066] PHP Warning:  fopen(/test.txt): failed to open stream: Permission denied in /var/www/html/a.php on line 2

上記は、許可が拒否されていることを明確に示しています。

ユーザーwww-dataに対してそのフォルダーへの書き込み許可を与えることにより、この問題を修正できます。

+ w表記を使用してフォルダーに書き込むための特定のユーザー許可を与える

4
hytromo