カテゴリ | |
サマリ | include_path絡みのエラー |
バージョン | 1.4.7 |
投稿者 | 神代 刹那 |
状態 | 完了 |
投稿日 | |
さくらインターネットの共用レンタルサーバースタンダードプランでPukiwikiを立ち上げていたのですが、あるphp.iniを作成してからPukiwikiが動作しなくなってしまいました
php.iniの中身は以下の一行のみで、パスは実在するものです
include_path = /home/username/pear/PEAR
エラー内容
Warning: require(lib/func.php) [function.require]: failed to open stream: No such file or directory in /home/username/www/MVPwiki/lib/pukiwiki.php on line 38
Fatal error: require() [function.require]: Failed opening required 'lib/func.php' (include_path='/home/username/pear/PEAR') in /home/username/www/MVPwiki/lib/pukiwiki.php on line 38
検索してみたところ、いくつか似た現象を解説しているサイトを見かけ、以下のようなことを試してみたのですが、解決はしませんでした
php.iniの内容を以下のように変更してみる
その1
include_path = ".:/home/username/pear/PEAR"
その2
include_path = .:/home/username/pear/PEAR
その3
include_path = '.:/home/username/pear/PEAR'
その4
include_path = .;/home/username/pear/PEAR
また、lib/init.phpの$HTTP_SERVER_VARSを$_POSTに全て置換してみましたが、やはり動きませんでした
何か良い解決方法があれば、教えていただけると幸いです
- include_path = /home/username/pear/PEAR; とか? --
- セミコロン[;]の閉じ忘れだと思うんだけれども。 --
- 仰るとおりにセミコロンをつけても変化はありませんでした。(そもそもINIファイルにおいてのセミコロンはコメント扱いなのではないのでしょうか?) -- 神代 刹那
- 設定ファイル - PHP Manual の説明例より「引用符をつけないセミコロン(;)の後のテキストは、すべて無視されます」(つまり、その4は「include_path = .」と設定したことになる、正しくは「include_path = ".;/home/username/pear/PEAR"」)
あと、コア php.ini ディレクティブに関する説明 - PHP Manual のinclude_path の説明より、「フォーマットは、システムの環境変数 PATHと同じです。つまり、UNIXでは コロンで、Windowsではセミコロンで区切ったディレクトリのリスト で指定します。」 --
- 関連: 質問箱/3284, 質問箱/3501, 質問箱/4262, 質問箱/4300, 質問箱/4522 --
- その4はコメント扱いになることを分りながらも、一か八かでやってみた感じです。結局無駄でしたが・・・。 -- 神代 刹那
- 質問箱3/284, 質問箱3/501, 質問箱4/262は事前に読んで質問しております。質問箱4/300, 質問箱4/522は初めて読みました。今からちょっと試して見たいと思います。 -- 神代 刹那
- 質問箱4/300を要約すると、その1相当なのでしょうか?(私の理解が足りないようならすみません)結果は同じでした。PukiWikiは動作せずです。 -- 神代 刹那
- 質問箱4/522の方法も試してみました。
まずindex.phpの
define('DATA_HOME', '');
define('LIB_DIR', 'lib/');
をフルパスで指定しましたが、動作せずでした
php.iniにopen_basedirを書き、PukiWikiインストールディレクトリのフルパスを記述しましたが、これも動作はしませんでした
convert_html.phpのエラーが画面に大量に出ていました
BugTrack2/146に乗っ取り、convert_html.phpの修正をした上でopen_basedirにPukiWikiインストールディレクトリのフルパスを記述しましたが、これも動作はしませんでした
このときの動作しない内容としては、paraedit.inc.phpとpukiwiki.phpが大量のエラーを吐いていました
convert_html.phpのエラーはなくなっていました
またopen_basedirにPukiWikiインストールディレクトリのフルパスを記述したことにより、他のPHPプログラムが全て動作しなくなるという現象も発生してしまいました -- 神代 刹那
- 新しいphp.ini を作成する前の(最悪、php.ini なしの)状態に戻して、PukiWiki の動作やinclude_path 設定を確認できますか?
もしできるのなら、その状態のinclude_path 設定を作成したphp.ini にコピーしてから置いてみて、動作するかを試してみては?(include_path の変更だけが原因なのか、それとも他にも合わない設定が潜んでいるのか・・・。パッチを当ててトラブルになった時のように、少しずつ原因を絞り込んでいく方がいいですよ) --
- どうやらデフォルトのphp.iniは、共用サーバーの何処かにあるみたいです。私が作ったのはユーザー用のphp.iniとでも言えばいいのでしょうか、記述されているのは例の一行のみで、この一行を添削かコメントにすればPukiWikiは問題なく動作します。 -- 神代 刹那
- pukiwikiのあるディレクトリをinclude_pathに指定してもダメ? --
- やはりダメでした。 -- 神代 刹那
- 駄目な方法だとは思うんですが、php.iniをPEARを使っているPHPプログラムのルートディレクトリに移動させて解決しました。今までは公開ディレクトリ(./public_html相当、このサーバーでは/home/username/www)直下にphp.iniを置いていて、PukiWikiは/home/username/Wiki、PEARを使っているものは/home/username/hoge/piyoに置いていたのですが、/home/username/wwwのphp.iniを/home/username/hoge/piyoに移動させたという事です。 -- 神代 刹那
- コレ を見て試した、・・・のではなさそうですね。(PEAR のインストールディレクトリが違う)
バージョンしだいですが、set_include_path() という手もなくはない。(ユーザー用のphp.ini がないときのinclude_path を調べて/home/username/www のスクリプトに仕込むか、/home/username/hoge/piyo のスクリプトにPEAR へのパスを仕込むかは、ご自由に) --