13

次のディレクトリを作成できる、以前に機能していたPHPスクリプトがありますmkdir

$webfolder = "/var/www/html/images/user";
mkdir($webfolder, 0770);

/var/www/html/images現在のフォルダーのアクセス許可設定にいくつかの変更を加えました。

drwxrwx---. myself apache system_u:object_r:httpd_sys_content_t:s0 images

以前、このフォルダは が所有していたと思いますapache。しかしapache、ユーザーグループとして読み取り、書き込み、および実行のすべての権限を持っているため、フォルダーを作成できないのはなぜでしょうか。を使用すると、ブール値がmkdir生成されます。false

問題はディレクトリの所有権によるものですか、それとも他の理由がありますか? PHP バージョン 5.4 を使用していることに注意してください。

エラーログが追加されました:

[2012 年 12 月 17 日月曜日 11:12:34] [エラー] [クライアント 127.0.0.1] PHP 警告: mkdir(): 33 行目の /var/www/html/upload で許可が拒否されました。リファラー: https://mywebsite. com/リファラー

4

2 に答える 2

34

答えは目の前にあるのですが、SELinux に不慣れなため、見逃してしまいます。

SELinux コンテキスト タイプは、フォルダーが apache に対して読み取りと書き込みの両方が可能になるように、httpd_sys_content_rw_t代わりにas に設定する必要があります。httpd_sys_content_tコンテキストを再帰的に変更するには、次のコマンドを使用します。

# chcon -R -t httpd_sys_content_rw_t /var/www/html/images

やれやれだぜ。これに遭遇した他の人に役立つことを願っています。

于 2012-12-18T12:53:20.233 に答える
0

PHP5.4.16/Apache 2.4.6/mariadb 5.5.44 を使用する CentOS7 VM では、コンパイル済みのテンプレート ファイルを生成するための smarty テンプレート ディレクトリへの書き込みができず、次のエラーが発生していました (/var/log/httpd/error_log 内)。

[Thu Mar 31 12:36:08.201383 2016] [:error] [pid 13094] [client 192.168.212.65:52204] PHP Fatal error:  Smarty error: unable to write to $compile_dir '/var/www/html/app1/templates_c'. Be sure $compile_dir is writable by the web server user. in /var/www/html/app1/libs/smarty/Smarty.class.php on line 1093

そのため、PHP アプリケーションは空白の画面を表示していました。

chmod 777 templates_cも機能しませんでした。しかし、@Quest Overflow の提案によると、この VM の Web ルートに対する権限は問題を解決しました。

私は実行しなければなりませんでした:

[root@appserver html]# chcon -R -t httpd_sys_content_rw_t /var/www/html

もちろん、templates_c とキャッシュは apache ユーザーが所有する必要があります。

drwxr-xr-x.  2 apache apache     6 Mar 31 12:56 templates_c
drwxr-xr-x.  2 apache apache     6 Mar 31 12:56 cache

半日以上過ごした後、これに出くわしました。ありがとう

于 2016-03-31T07:52:55.333 に答える