重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

レンタルサーバの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で同じです。

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

A 回答 (2件)

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



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

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

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

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

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

お礼日時:2013/11/15 10:12

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

この回答への補足

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

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

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

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

補足日時:2013/11/14 22:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!