• ベストアンサー

require_once()でファイルが読み込めません

すいません、色々やったみたのですがよく分からなかったので教えてください。 PHPのテンプレートのSmartyを使いたいと思い、公式サイトからダウンロードして/usr/local/lib/php/Smartyにコピーしました。 その後、php.iniのinclude_pathにて".:/usr/local/lib/php/Smarty"と設定し、require_once("Smarty.class.php");としたのですが、 failed to open stream: No such file or directoryや Failed opening required 'Smarty.class.php' というエラーが出て読み込めません。また、phpinfo()を見る限りではphp.iniはきちんと読みにいっているようでした。 ためしに/usr/にSmartyを置き、include_pathもそのように変更してみたのですが読み込めません。カレントディレクトリに配置した場合は上手く読み込めました。また、Smartyでなくてもどのファイルでも読み込めない状況です。 環境はFedora6、Apache2.0、PHP5です。何かアドバイスよろしくお願いします。

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

  • ベストアンサー
  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.2

Smarty.class.phpのパーミッションはどうですか? include_path上にファイルが存在しても、Webサーバを動かしているユーザから読めなければ、ファイルが読めずエラーになります。 一時的に chmod 755 Smarty.class.php としてみてはどうでしょう? これで動くようなら、所有者を変更するかして正しいパーミッションに戻せばよいと思います。

puripuriman
質問者

お礼

回答ありがとうございます。 上の方法を試してみたのですが、やはりうまく読み込めないようでした。 感覚としては、ファイルの種類は問わず、カレントディレクトリやドキュメントルート以下にあるファイルは読めるが、/usr~~などの場所にあるファイルはパスが通っていてもなぜか読めないような感じです。折角アドバイスをくださったのにすいません・・・。

その他の回答 (1)

noname#26650
noname#26650
回答No.1

> その後、php.iniのinclude_pathにて".:/usr/local/lib/php/Smarty"と設定し、require_once("Smarty.class.php");としたのですが、 このとき、/usr/local/lib/php/Smarty の直下に Smarty.class.php がありましたか? もしかして、/usr/local/lib/php/Smarty/libs の下に Smarty.class.php があったりはしませんでしたか?

puripuriman
質問者

お礼

回答ありがとうございます。 たしかに上のような状況になってました。 そこでinclude_pathを".:/usr/local/lib/php/Smarty/libs"にして再起動してみたんですが、やっぱりうまく動かず・・・。

puripuriman
質問者

補足

エラーには Failed opening required 'Smarty.class.php' (include_path='.:/php/includes:/usr/local/lib/php/Smarty/libs') とinclude_pathが表示されていて、Smarty.class.phpも存在しているにも関わらず読み込めないような感じです。 ちなみに前はApache、PHPともソースをコンパイルして入れていて、その時はうまく動いてたのですが、この度両方を消してパッケージで入れなおしてからエラーがでるようになってしまいました。

関連するQ&A