2

我有几个独立的网站,它们位于不同的目录中。对于它们共有的包含,我将它放在其余部分所在的根目录中。

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

4 回答 4

5

编辑:你想改变你的 include_path 包括/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 回答