我有一个可以在ZendFramework(库)上运行的NetBeansProject,并使用PHPUnit进行测试,但每次调用Zend Framework的某些函数(例如,引导文件调用它们)时,它会产生致命的错误,因为它可以找不到那些文件: 致命错误:require_once():未能打开所需的'Zend / Db / Table / Abstract.php'(include_path ='。; C:\ xampp \ htdocs \ pear; C:\ xampp \ php \ PEAR')...
我的bootstrap文件如下所示:
<?php
ini_set('display_startup_errors', 1);
ini_set('display_errors', 2);
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') : 'testing'));
defined('LIBRARY_PATH')
|| define('LIBRARY_PATH', realpath(dirname(__FILE__) . '/../library'));
defined('TESTS_PATH')
|| define('TESTS_PATH', realpath(dirname(__FILE__)));
//Define constant global variable
defined('_FOO_ROOT_DIR_') || define('_FOO_ROOT_DIR_', dirname(dirname(__FILE__)));
defined('_FOO_APP_DIR_') || define('_FOO_APP_DIR_', _FOO_ROOT_DIR_ . '/application');
defined('_FOO_LIB_DIR_') || define('_FOO_LIB_DIR_', _FOO_ROOT_DIR_ . '/library');
defined('_FOO_PUBLIC_DIR_') || define('_FOO_PUBLIC_DIR_', _FOO_ROOT_DIR_ . '/public');
defined('_FOO_TEST_DIR_') || define('_FOO_TEST_DIR_', _FOO_ROOT_DIR_ . '/tests');
defined('_FOO_ZF_DIR_') || define('_FOO_ZF_DIR_', 'C:\zend\ZendFramework-1.11.11\library');
require_once 'Zend/Db/Table/Abstract.php';
.
.
.
.
#End of bootstrap.php
并且require_once是触发错误的原因。例如,如果我修改bootstrap文件而不是从'Zend / Db / Table / Abstract.php'执行require,我是从_FOO_ZF_DIR _。'/ Zend / Db / Table / Abstract.php'那样做的,那么问题就解决了,但是我必须重写Zend库的每个文件中的每一个包含。
include上框架的路径是正确的,我已经使用上面部分复制的bootstrap文件和我已经由项目设置并运行的伙伴给我的phpunit.xml配置了我的PHPUnit。
phpunit.xml看起来像这样(我不知道它是否与主题相关):
<phpunit bootstrap="./bootstrap.php" colors="true">
<testsuite name="ApplicationTestSuite">
<directory>./application/</directory>
<directory>./library/</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../application</directory>
<exclude>
<directory suffix=".php">../application/modules/pal</directory>
<directory suffix=".phtml">../application/views</directory>
<file>../application/Bootstrap.php</file>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./log/coveragereport" charset="UTF-8"
yui="true" highlight="false" lowUpperBound="35" highLowerBound="70"/>
</logging>
</phpunit>
我还在选项工具上配置了Zend选项卡,注册了提供程序等。 那么我该如何解决这个问题,以便NetBeans能够检测到包含必须不仅与项目文件夹有关,而且与包含的库路径有关?
我还试图通过全局php包含和项目特定的(通过项目属性)包含库,但它们都不起作用......
提前谢谢
答案 0 :(得分:0)
解决! 我忘了在php.ini文件中包含ZendFramework库的路径。
这就是我所拥有的: 的include_path = “.; C:\ XAMPP \ htdocs中\梨; C:\ XAMPP \ PHP \ PEAR”
这就是它工作所需要的: 的include_path = “.; C:\ XAMPP \ htdocs中\梨; C:\ XAMPP \ PHP \ PEAR; C:\ Zend的\ ZendFramework-1.11.11 \库”
问候!