1

我自己花了很多时间对此进行故障排除,但我所阅读的内容都没有解决我的问题,所以我希望我能在这里得到一些帮助。

所以无论如何,我已经编写了一个 PHP 脚本,它提供了各种功能来连接 Google 日历。当我使用一些内联测试代码直接运行这个脚本来调用我的函数时,一切运行正常。但是,当我使用“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. 该文件实际上并不存在于“扩展”文件夹中。它确实存在于父文件夹中。如果我只是将“EventQuery.php”复制到“扩展”文件夹中,我的脚本将按预期运行。很奇怪,对吧?

所以这确实解决了我的问题,但我想知道这里发生了什么,以防它产生更多问题。我还应该注意,我正在将此脚本调用到 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');
4

1 回答 1

0

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

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

如果可用于查明位置,请检查堆栈跟踪中的错误。如果那不可用,请对该字符串进行全局查找。如果您找到任何匹配项,您需要将它们更改为Zend_Gdata_Calendar_EventQuery.

更新

似乎这是一个已知的错误

当您的代码使用ErrorException. 显然它已在 1.12 分支中修复,但尚未发布。

11959 错误报告中有一个补丁可以解决这个问题

于 2012-12-05T03:27:37.470 回答