奇怪的Zend Framework问题 - include_once正在寻找错误的文件夹

时间:2012-12-05 02:54:31

标签: php zend-framework gdata

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

所以无论如何,我编写了一个PHP脚本,它提供了与Google Calendar连接的各种功能。当我使用一些内联测试代码直接运行此脚本来调用我的函数时,一切运行正常。但是,当我使用'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

你的第一个想法可能是我没有使用正确的包含路径,但我已经多次检查并重新检查。我甚至尝试过编写路径。我很确定我正在使用正确的路径。

现在是奇怪的一点。如果您查看错误,您会注意到Zend尝试包含的文件:Zend\Gdata\Calendar\Extension\EventQuery.php。此文件实际上不存在于“Extension”文件夹中。它确实存在于父文件夹中。如果我只是将'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');

1 个答案:

答案 0 :(得分:0)

我怀疑任何Zend文件中都存在错误,因为您已经表明它在隔离测试中正常工作。

Zend_Loader引发了错误,这意味着代码中的某些内容引用了Zend_Gdata_Calendar_Extension_EventQuery

检查堆栈跟踪是否有错误(如果可用)以查明位置。如果那不可用,请对该字符串执行全局查找。如果您找到任何匹配项,则需要将其更改为Zend_Gdata_Calendar_EventQuery

更新

似乎这是一个已知的错误

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

11959错误报告中有一个补丁修复了问题