2

別々のディレクトリにあるいくつかの別々の Web サイトがあります。それらが共通に持っているインクルードについては、それらの残りが存在するルートディレクトリに存在しています。

user@hostname:/var/www$ ls
website_1 website_2 website_3 common_files 

Zend パッケージをインクルードしたいので、インクルード パスがあります

ini_set("include_path", get_include_path() . ":/var/www/common_files/Zend");
require_once("Mail.php");

Mail.php読み込みは問題ありませんが、どこかにこの行があります

require_once 'Zend/Mail/Transport/Abstract.php';

このエラーを与える

Warning: require_once(Zend/Mail/Transport/Abstract.php): failed to open stream: No such file or directory in var/www/common_files/Zend/Mail.php on line 26

そのため、php はインクルード パスのディレクトリ構造に再帰的に降りることはありません。Zend を各 Web サイトのディレクトリに移動したり、すべてのインクルードへのパスを綴ったりする必要がありますか?


ところで、アブストラクトは存在します:

user@host:/var/www/common_files/Zend$ tree -d 
...
`-- Mail/Transport
    |-- Mail/Transport/Abstract.php
    |-- Mail/Transport/Exception.php
    |-- Mail/Transport/Sendmail.php
    `-- Mail/Transport/Smtp.php

9 directories, 32 files
4

4 に答える 4

5

編集: include_path を include に変更したい/var/www/common_files

これを行った後、まだ壊れているものがあるとすれば、それは何ですか?

于 2010-08-20T16:11:10.480 に答える
1

愚かな答え: Abstract.php は存在しますか?

require_once 'Mail/Transport/Abstract.php';

これを試してください。Mail.php は既に Zend フォルダーにあるため、/Zend/Zend/.../Abstract.php を探していると思います。

于 2010-08-20T16:08:21.890 に答える
1

ここが作業ディレクトリのように見えるZendので、ステートメントは を探してい/Zend/Zend/Mail/Transport/Abstract.phpます。ステートメントから切り離してみてくださいZend。うまくいくはずです。

于 2010-08-20T16:13:16.903 に答える
0

インクルード パスを Zend フォルダーがあるパスに設定する必要があります。次に、次のようにファイルを含めます

require_once 'Zend/Mail.php'
于 2010-08-20T16:14:20.787 に答える