在Zend中获取require_once以查找文件

时间:2012-10-10 07:24:09

标签: php zend-framework zend-db require-once

我是ZEnd的新手,非常感谢任何帮助

我有各种承包商在我的网站上工作,事情变得混乱,在不同的位置有相同文件夹的多个副本。现在我要进去并试图清理一切。 FUN!我遇到的一个问题是Zend中的require_once语句没有找到他们正在寻找的文件。我必须进入并改变路径如下。假设这是Zend / Gdata / App / FeedEntryParent.php中找到的代码

不工作(找不到文件):

require_once 'Zend/Gdata/App/Extension/Updated.php';

似乎工作正常:

require_once '/home/paul13/paul13.com/includes/library/Zend/Gdata/App/Extension/Updated.php';

问题是大多数require_once语句都像第一个一样写。进入并手动编辑所有这些,是否有办法告诉require语句在指定的目录中查找? '/home/paul13/paul13.com/includes/library/'使用php.ini?我试着进入

include_path=".:/home/paulthetutor/paulthetutors.com/includes/library"

在php.ini中,但似乎没有解决问题。

2 个答案:

答案 0 :(得分:1)

您的问题标题似乎与您发布的内容几乎没有关系。

  

我有各种承包商在我的网站上工作......没有找到文件

您是否向承包商付款以提供无效的代码?

  

问题显然是第一个路径

否 - 问题是您的包含路径未正确设置。如果你使用包含路径作为一种机制来避免输入大量的东西,那么你做错了。您的包含路径不应包含指向由其他人维护的目录树内的条目。如果没有非常具体和有效的目标,你也不应该改变这种结构。

作为临时解决方法,直到你将include / require语句修复到它们本来应该是什么,然后更改你的包含路径 - 在php.ini,httpd.conf,.htaccess中,通过auto - 在每个脚本的前面或顶部。

(顺便说一句,你的文件夹与目录混淆)

答案 1 :(得分:0)

您在问题中提到的文件夹是Zend库的一部分。您可以检查Zend Framework项目中是否有库文件夹以及它是否包含文件

  

'的Zend / GDATA /应用/扩展/ Updated.php'

要包含整个ZF库,请在public / index.php或Bootstrap.php文件中使用以下代码。

 // Define path to application directory
 defined('APPLICATION_PATH')
      || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

 // Define application environment
   defined('APPLICATION_ENV')
      || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

  // Ensure library/ is on include_path
 set_include_path(implode(PATH_SEPARATOR, array(
     realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
   )));

是的,有选择地逐个删除require语句和本地复制的库文件版本(在确保它们没有更新的代码之后)。

您可能需要检查默认的Zend Framework应用程序结构here以比较文件夹结构。