プロが教える店舗&オフィスのセキュリティ対策術

すいません、色々やったみたのですがよく分からなかったので教えてください。

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です。何かアドバイスよろしくお願いします。

A 回答 (2件)

Smarty.class.phpのパーミッションはどうですか?



include_path上にファイルが存在しても、Webサーバを動かしているユーザから読めなければ、ファイルが読めずエラーになります。

一時的に
chmod 755 Smarty.class.php
としてみてはどうでしょう?

これで動くようなら、所有者を変更するかして正しいパーミッションに戻せばよいと思います。
    • good
    • 1
この回答へのお礼

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

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

お礼日時:2007/04/09 15:37

> その後、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 があったりはしませんでしたか?

この回答への補足

エラーには

Failed opening required 'Smarty.class.php' (include_path='.:/php/includes:/usr/local/lib/php/Smarty/libs')

とinclude_pathが表示されていて、Smarty.class.phpも存在しているにも関わらず読み込めないような感じです。

ちなみに前はApache、PHPともソースをコンパイルして入れていて、その時はうまく動いてたのですが、この度両方を消してパッケージで入れなおしてからエラーがでるようになってしまいました。

補足日時:2007/04/08 23:05
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/08 22:54

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