在Zend Server CE上使用PHPUnit的麻烦 - MacOSX

时间:2011-11-21 17:35:51

标签: macos unit-testing phpunit zend-server-ce

我已经在我的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

有人知道问题可能是什么吗?

谢谢和问候!

2 个答案:

答案 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。