我有几个独立的网站,它们位于不同的目录中。对于他们共同的包含,我将它生活在其他人居住的根目录中。
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移入每个网站目录,拼出每个包含的路径,或者是什么?
BTW摘要确实存在:
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
答案 0 :(得分:5)
编辑:您想要将include_path更改为包含/var/www/common_files
执行此操作后,什么(如果有的话)仍然被打破?
答案 1 :(得分:1)
愚蠢的回答:Abstract.php存在吗?
require_once 'Mail/Transport/Abstract.php';
试试这个,因为Mail.php iz已经在Zend文件夹中了,我想它会找/ Zend / Zend /.../ Abstract.php
答案 2 :(得分:1)
看起来Zend
是这里的工作目录,所以你的陈述正在寻找/Zend/Zend/Mail/Transport/Abstract.php
。尝试从声明中删除Zend
,它应该可以正常工作。
答案 3 :(得分:0)
您需要将包含路径设置为Zend文件夹所在的路径。然后你包括像这样的文件
require_once 'Zend/Mail.php'