みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ディレクトリの書込権限について

レンタルサーバのSmartyのパーミッションでつまずいています。
とあるAレンタルサーバでsmartyを利用したPHPのプログラムを設置するとなんの問題もなく設置できるのですが

別のBレンタルサーバでsmartyを利用したPHPのプログラムを設置すると以下のようなエラーがでます。
Fatal error: Smarty error: unable to write to $compile_dir '/virtual/xxx/public_html/xxx/templates_c'. Be sure $compile_dir is writable by the web server user. in /virtual/xxx/public_html/xxx/class/Smarty/libs/Smarty.class.php on line 1093

書き込み権限がtemplates_cディレクトリにないということらしいですが、Bレンタルサーバのtemplates_cディレクトリのパーミッションは、0755で、設置が成功したAレンタルサーバのtemplates_cディレクトリのパーミッションも、0755です。

実行しているSmarty.class.phpのパーミッションも、0644で同じです。

同じパーミッションでレンタルサーバごとにエラーが出る出ないが違う理由はなんでしょうか?サーバの設定に詳しくないのでよくわかりません。考えられる原因があれば教えてください。

投稿日時 - 2013-11-14 20:21:42

QNo.8347481

すぐに回答ほしいです

質問者が選んだベストアンサー

phpの実行モードはどうなっていますか?AサーバがCGI動作で、Bサーバがモジュール動作なんてオチがありそうなので・・・

モジュール動作ならApacheの権限でしか動作しませんからotherへの書き込み権限が必要です(606とか707とか)。

投稿日時 - 2013-11-15 08:41:06

お礼

ヒントを下さりありがとうございます。

補足します。
phpinfo()でServer APIを調べました。
成功するAレンタルサーバは、CGI/FastCGI。
失敗するBレンタルサーバは、Apache。

検索して調べてみたところ、safe_modeという言葉があったので、
phpinfo()でsafe_modeを調べました。
成功するAレンタルサーバは、Off。
失敗するBレンタルサーバは、On。

CGIモードやセーフモードで検索したサイトを見たところどうやらエラー原因にヒットしたようです。糸口が見つかったのでこれから調べてみます。ありがとうございます。助かりました。

投稿日時 - 2013-11-15 10:12:31

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

パーミッションだけ見て、そのディレクトリの所有ユーザーと、phpの実行ユーザーは調べないのでしょうか?

投稿日時 - 2013-11-14 20:59:42

補足

回答頂きありがとうございます。

補足します。
Aレンタルサーバのtemplates_cディレクトリの所有者と、phpの実行ユーザは同じです。
Bレンタルサーバのtemplates_cディレクトリの所有者と、phpの実行ユーザも同じです。

あと所属グループも同じです。

検索単語のヒントやサイトURLでもいいので何か教えて頂けたらありがたいです。

投稿日時 - 2013-11-14 22:31:23

あなたにオススメの質問