我已经在我的MacOS Lion上安装了Zend Server CE,除了PHPUnit之外,一切都运行顺畅。
我的PHPUnit安装是从Zend Server CE附带的PERL中完成的。
这是我通过控制台运行phpunit时的输出:
Failed loading ”/usr/local/zend/lib/php_extensions/xdebug.so”: dlopen(”/usr/local/zend/lib/php_extensions/xdebug.so”, 9): image not found
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/zend/lib/php_extensions/mcrypt.so' - dlopen(/usr/local/zend/lib/php_extensions/mcrypt.so, 9): Library not loaded: /usr/lib/libltdl.3.dylib
Referenced from: /usr/local/zend/lib/php_extensions/mcrypt.so
Reason: image not found in Unknown on line 0
PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0
PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/local/bin/phpunit on line 39
PHP Stack trace:
PHP 1. {main}() /usr/local/bin/phpunit:0
有人知道问题可能是什么吗?
谢谢和问候!
答案 0 :(得分:4)
好的,这是我的第一个答案。所以对我很轻松。
今晚我在OSX Lion上遇到了与Zend Server CE相同的问题。为了解决这些问题,您必须安装xcode,因为 unix开发工具是必需的。
让我们开始吧,你有两个问题: xdebug.so 和 libltdl.3.dylib
找不到首先 xdebug.so ,要安装它,您应该从命令行运行以下命令:
sudo su -
它会询问您的密码(如果您没有密码,请按Enter键)。然后:
export CFLAGS="-arch i386 $CFLAGS"
export CCFLAGS="-arch i386 $CCFLAGS"
export CXXFLAGS="-arch i386 $CXXFLAGS"
export LDFLAGS="-arch i386 $LDFLAGS"
/usr/local/zend/bin/pear config-set php_ini /usr/local/zend/etc/php.ini
/usr/local/zend/bin/pecl install xdebug
前四行强制编译器生成32位二进制文件,因为Zend Server是32位二进制文件,而OSX Lion是64位操作系统。
好的,现在你应该在* / usr / local / zend / lib / php_extensions *上安装 xdebug.so ,只需确保你的 / usr / local / zend / etc /php.ini 文件在所有其他扩展名之后和 [zend] 部分之前加载带有以下行的xdebug:
zend_extension=/usr/local/zend/lib/php_extensions/xdebug.so
这是我的 php.ini 中的片段:
...
;extension=odbc.so
;extension=imagick.so
zend_extension=/usr/local/zend/lib/php_extensions/xdebug.so
[zend]
zend_extension=/usr/local/zend/lib/ZendExtensionManager.so
...
如果没有,请手动添加,然后检查您的 php.ini 文件是否包含以下行并删除它,因为xdebug必须作为Zend扩展加载。
extension=xdebug.so
第二次,只要您安装xcode, libltdl.dylib 就会在 / usr / lib 中提供,因此您可以创建一个使用以下命令进行符号链接:
sudo ln -s /usr/lib/libltdl.dylib /usr/lib/libltdl.3.dylib
下次运行phpunit时,一切都应该顺利进行(虽然没有测试过任何mcrypt函数)。
答案 1 :(得分:1)
当我尝试启动phpunit时,我刚刚遇到了mcrypt的问题。
如果您使用sudo运行phpunit,则不会出现警告:)
sudo ./phpunit --version
Sebastian Bergmann的PHPUnit 3.6.6。