Php 奇怪的Zend框架问题-include_once在错误的文件夹中查找

Php 奇怪的Zend框架问题-include_once在错误的文件夹中查找,php,zend-framework,gdata,Php,Zend Framework,Gdata,我自己花了很多时间来解决这个问题,但我所读到的都不能解决我的问题,所以我希望在这里能得到一些帮助 无论如何,我已经编写了一个PHP脚本,它提供了各种各样的函数来连接GoogleCalendar。当我使用一些内联测试代码直接运行这个脚本来调用我的函数时,一切都正常运行。但是,当我使用“require_once”从其他脚本调用函数以包含它时,我会出现以下错误: Warning: include_once(Zend\Gdata\Calendar\Extension\EventQuery.php) [f

我自己花了很多时间来解决这个问题,但我所读到的都不能解决我的问题,所以我希望在这里能得到一些帮助

无论如何,我已经编写了一个PHP脚本,它提供了各种各样的函数来连接GoogleCalendar。当我使用一些内联测试代码直接运行这个脚本来调用我的函数时,一切都正常运行。但是,当我使用“require_once”从其他脚本调用函数以包含它时,我会出现以下错误:

Warning: include_once(Zend\Gdata\Calendar\Extension\EventQuery.php) [function.include-once]: failed to open stream: No such file or directory in C:\Users\Luke Franklin\Clients\Tiers For Tea\Development\TiersForTea.com v1.1\lib\Zend\Loader.php on line 134
Warning: include_once() [function.include]: Failed opening 'Zend\Gdata\Calendar\Extension\EventQuery.php' for inclusion (include_path='.;C:\xampp\php\PEAR;C:\Users\Luke Franklin\Clients\Tiers For Tea\Development\TiersForTea.com v1.1\lib;C:\xampp\htdocs\TiersForTea.com\lib') in C:\Users\Luke Franklin\Clients\Tiers For Tea\Development\TiersForTea.com v1.1\lib\Zend\Loader.php on line 134
您的第一个想法可能是,我没有使用正确的include路径,但我已经多次检查并重新检查了这一点。我甚至试着对路径进行编码。我确信我使用的是正确的路径

现在是奇怪的一点。如果查看该错误,您会注意到Zend试图包含的文件:Zend\Gdata\Calendar\Extension\EventQuery.php。“扩展名”文件夹中实际上不存在此文件。但它确实存在于父文件夹中。如果我只是将“EventQuery.php”复制到“Extension”文件夹中,我的脚本将按预期运行。奇怪吧

这确实解决了我的问题,但我想知道这里发生了什么,以防它产生更多的问题。我还应该注意,我正在将这个脚本调用到OpenCart模块中

您可能想看看我的一些代码,这里是一些重要的代码片段,如果您想了解更多详细信息,请告诉我:

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . realpath('\\lib') . PATH_SEPARATOR . "C:\\xampp\\htdocs\\TiersForTea.com\\lib");
require_once('Zend/Loader.php');

function connect() {
    Zend_Loader::loadClass('Zend_Gdata');
    Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
    Zend_Loader::loadClass('Zend_Gdata_Calendar');

我怀疑Zend文件中是否存在此错误,因为您已经指出它在隔离测试中正常工作

该错误是从Zend_加载程序抛出的,这意味着代码中的某些内容正在引用Zend_Gdata_Calendar_Extension_EventQuery

如果可以精确定位位置,请检查堆栈跟踪中的错误。如果不可用,请对该字符串执行全局查找。如果找到任何匹配项,则需要将其更改为Zend_Gdata_Calendar_EventQuery

使现代化 看来这是一个已知的错误

当代码使用ErrorException注册错误处理程序时,这是一个问题。显然,它在1.12分支中已修复,但尚未发布


11959 bug报告中有一个补丁修复了这个问题

听起来Zend文件中有一个指向EventQuery.php的路径不正确。您使用的是什么版本的框架?看起来确实如此,但不寻常的是,该脚本本身在测试中运行良好,但在被其他PHP脚本包含时却没有。我的Zend版本是1.12.0,可能与感谢Phil的回复相同。我在我的任何文件中都找不到字符串。@LukeFranklin你能搜索所有文件Zend、OpenCart和你正在使用的任何东西吗?我创建了一个EventQuery对象,如下所示:$query=$dataSource->newEventQuery$根据我的原始代码片段,数据源来自connect函数。就像这样:新的Zend_Gdata_日历$clientI搜索了所有内容。Zend_Gdata_Calendar_Extension_EventQuery的0结果