2012-03-30 8 views
2

この問題に関するこのサイトに関する多くの質問がありましたが、私のケースは少し違っていることは間違いありません。私は最近、ZF 1.9.6から1.11.11にアップグレードして以来、私のプロダクションサーバーでの作業が中止されました。Zend Framework 1.11.11インクルードパスopen_basedirの問題

私のlocalhostは、5.2.11のサーバが動作している間にPHP 5.3.8を実行しています。私はそれが何かと関係があるかどうかはわかりませんが、私はそれをちょうど言及すると思いました。

初めてフレームワークをアップグレードしたときに、open_basedir restriction in effect.というエラーが発生しました。私は、index.phpファイルのset_include_path()への呼び出しからget_include_path()を削除することで、いくつかの他の方法を正確に解決しました。 As mentioned here

これはopen_basedirエラーを修正しましたが、現在は別の問題が発生しています。様々な理由でいくつかの異なるファイルで、私はincluderequireステートメントを経由してファイルに相対のパスを使用しています。例えば

require_once 'application/models/MyModel.php'; 

しかし、今では急にもう動作しません!私は突然そうのような./を持つすべてのこれらのパスを付加しなければならなかった:

require_once './application/models/MyModel.php'; 

問題があり、手動で通過し、それらのすべてを見つけ、それを変更することがあまりにも月のインスタンスは道があります。むしろ、私はの理由を理解したいのですが、これらのパスはサーバでは動作しなくなりましたが、引き続きローカルホストで動作します。

私の考えは、index.phpファイルのset_include_path()にはget_include_path()の部分が含まれていないという事実と関係がありますが、わかりません。

誰かが洞察力を発することはできますか?ありがとう!

答えて

3

私はそれがopen_basedirの約this noteに関係してい疑う:

open_basedirので指定された制限はPHP 5.2.16と5.3.4以降のディレクトリ名です。以前のバージョンでは、これをプレフィックスとして使用していました

接頭辞としてチェックしてディレクトリとしてチェックすることとの違いは間違いなくこのような問題を引き起こします。

使用:

ソリューションは、PHPのドキュメントでthis noteとは何かを持っているかもしれません。インクルードパスの相対インクルードは現在のディレクトリを意味します。しかし、インクルード './file'を明示的に使用する方が、PHPが常にインクルードごとに現在のディレクトリをチェックするより効率的です。

あなたのパスを含める設定するときに、私はあなたがこのようにリンクされている例、変更すべきだと思う:「」

set_include_path(
    APPLICATION_PATH . './../library' . PATH_SEPARATOR . 
    APPLICATION_PATH . './../library/Zend' 
); 

お知らせ最初のスラッシュの前に追加しました。これは、現在の作業ディレクトリに対して相対的なものにして、インクルードを./fileのようにする必要がなくなります。

また、この方法では効率が悪いので、TextCrawlerなどのツールを使用して、&を複数のファイルに置き換えることを検討することもできます。


さらに、'を含むことができます。(現在のディレクトリ - またはドキュメントルート)をインクルードパスに設定してください。ように:

set_include_path(APPLICATION_PATH . '../library' 
    . PATH_SEPARATOR . APPLICATION_PATH . '../library/Zend' 
    . PATH_SEPARATOR . '.' // <-- notice this! 
); 
+0

お返事いただきありがとうございました。非常に有益でした。私はそれを試してみるつもりです、そして、私は明日あなたの取引が何であるかを知らせます。 –

+0

私はあなたの答えに加えた解決策でこれを解決しました。いずれにせよ、あなたの答えは素晴らしかった!乾杯。 –

+1

答えにそのビットを追加してくれてありがとう、うまくいけば、誰かが道を歩いていくのを助けてくれるでしょう! –

関連する問題