include_path不递归?

时间:2010-08-20 16:04:18

标签: php server-side-includes include-path

我有几个独立的网站,它们位于不同的目录中。对于他们共同的包含,我将它生活在其他人居住的根目录中。

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

4 个答案:

答案 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'