Php 在Zend中获取一次以查找文件

Php 在Zend中获取一次以查找文件,php,zend-framework,zend-db,require-once,Php,Zend Framework,Zend Db,Require Once,我是ZEnd的新手,非常感谢您的帮助 我的网站上有各种各样的承包商,事情变得一团糟,同一个文件夹的多个副本放在不同的位置。现在我要进去把事情收拾干净。有趣!!!我遇到的一个问题是Zend中的require_once语句没有找到它们要查找的文件。我必须进去,改变路径如下。假设这是Zend/Gdata/App/FeedEntryParent.php中的代码 不工作(找不到文件): 似乎效果不错: require_once '/home/paul13/paul13.com/includes/libra

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

我的网站上有各种各样的承包商,事情变得一团糟,同一个文件夹的多个副本放在不同的位置。现在我要进去把事情收拾干净。有趣!!!我遇到的一个问题是Zend中的require_once语句没有找到它们要查找的文件。我必须进去,改变路径如下。假设这是Zend/Gdata/App/FeedEntryParent.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中,但这似乎并不能解决问题。

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

'Zend/Gdata/App/Extension/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应用程序结构,以比较文件夹结构。

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

我有很多承包商在我的网站上工作…他们找不到文件

你付钱给承包商来交付不起作用的代码

问题显然是,第一条道路

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

在将include/require语句修复为它们本来应该存在的状态之前,将其作为临时解决方法,然后更改include路径—在php.ini中、在httpd.conf中、在.htaccess中、通过自动前置或在每个脚本的顶部


(顺便说一句,你把文件夹和目录搞混了)

明白了。我会回去接受有用的答案。抱歉,我没有意识到这是它的一部分。一个问题:您的站点是使用Zend Framework作为MCV应用程序,还是您的承包商只是使用了一点点?还有什么版本?@RockyFord我相信这是23775 2011-03-01 17:25:24Z版本ralph@MatteoTassinari返回并接受回答我之前问题的答案。我查看了我的php.ini文件,没有找到任何关于“include_path”的内容。我在不同的文件夹中有3个php.ini文件。希望这不是问题。您是在远程尝试在该网站上工作,还是在本地开发环境中工作?ZF库本身充斥着
include
require
语句。如果除了这些require_once语句之外,没有人做过任何修改,那么仅仅获得一个新版本的require_once语句有意义吗?我总是可以保存旧版本,如果需要的话就放回去。如果是这样的话,我在哪里可以得到一个?@janenz00-如果这听起来很愚蠢,很抱歉,但是我是直接复制这个代码,还是必须将一些单词更改为我自己的文件夹名称?另外,我似乎有两个bootstrap.php文件,一个在/Applications/bootstrap中,另一个在/Applications/bootstrap中。该代码应该已经存在于文件
application/public/index.php
或类似的文件中。您可能有多个bootstrap.php文件,一个用于应用程序,另一个用于每个附加模块。用干净的版本替换已安装的Zend framework可能有助于排除故障,请仔细备份旧版本。查看Zend/Applications,我甚至看不到公用文件夹。听起来是个坏兆头,不是吗?你对标题的看法是对的。我发现它们是,我需要更正包含路径,但没有更新标题。我现在正试图弄清楚如何在php.ini中为承包商指定正确的路径,代码在他们交付时起作用,但我的站点在不同的地方有相同文件夹和文件的不同版本,造成混乱。我正在尝试清理一些东西,并学习一些关于php.ini的知识,包括路径、Zend和过程中的其他内容
 // 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(),
   )));