Проблемы с PHPUnit на Zend Server CE - MacOSX

Я установил Zend Server CE на свой MacOS Lion, и все работает нормально, за исключением PHPUnit.

Моя установка PHPUnit была произведена из PERL, поставляемого с Zend Server CE.

Вот результат, когда я запускаю 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

Кто-нибудь знает, в чем может быть проблема или проблемы?

Спасибо и привет!


person Daniel Ribeiro    schedule 21.11.2011    source источник
comment
Я так понимаю, вы имеете в виду pear не Perl? :) - Кроме того: да, установка кажется довольно неработоспособной, но OSX + ZendServer пока что не проторенный путь (обе вещи сами по себе могут быть проблемой, когда дело доходит до php (+ pear) imho), что я не есть ключ к разгадке. Извиняюсь :)   -  person edorian    schedule 21.11.2011
comment
Я добавлю это в комментарий вместо ответа, потому что я не уверен, но я бы сказал, что это похоже на проблему с окружающей средой. Казалось бы, модуль PHP либо передает неправильную среду (это означает, что ваш интерпретатор PHP не может найти все свои конфигурации и файлы), либо он был скомпилирован с неправильными двоичными файлами.   -  person Seb Barre    schedule 21.11.2011
comment
Да, и что меня еще больше огорчает, так это тот факт, что эти ошибки появились после чистой установки Zend Server CE вместе с установкой PHPUnit через грушу. OBS: Да, я имел в виду грушу. Кто-нибудь знает, как правильно исправить или установить эти два?   -  person Daniel Ribeiro    schedule 23.11.2011


Ответы (2)


Хорошо, это мой первый ответ. Так что расслабься со мной.

Сегодня вечером у меня были те же проблемы с Zend Server CE на OSX Lion. Чтобы решить их, вам необходимо установить xcode, поскольку необходимы инструменты разработки unix.

Приступим, у вас две проблемы: xdebug.so и libltdl.3.dylib

Первый xdebug.so не найден, чтобы установить его, вы должны запустить следующее из командной строки:

sudo su -

Он попросит вас ввести пароль (если у вас его нет, просто нажмите клавишу ввода). Потом:

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-разрядная операционная система.

Хорошо, теперь у вас должен быть установлен xdebug.so в * / usr / local / zend / lib / php_extensions *, просто убедитесь, что ваш / usr / local / zend / etc / php. ini загружает xdebug со следующей строкой после всех других расширений и перед разделом [zend]:

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 не тестировались).

person erickthered    schedule 23.11.2011
comment
Я произвел новую установку Zend Server CE и строго следил за вашими действиями, но не могу решить проблему. Дело в том, что в тот момент, когда мне нужно вручную добавить xdebug в качестве расширения zend в файл php.ini, когда я перезапускаю свой Zend Server, менеджер расширений сообщает, что расширение не может быть загружено из-за ошибки. И хуже всего то, что ошибка не появляется. Есть другие идеи? Как твоя свежая установка? - person Daniel Ribeiro; 24.11.2011
comment
Хорошо, у меня все заработало. Но только когда я нахожусь в папке / usr / local / zend / bin и запускаю ее так: ./phpunit --version. Если я запустил команду phpunit с любого другого пути, это приведет к следующей ошибке: Неустранимая ошибка PHP: вызов неопределенного метода PHP_CodeCoverage_Filter :: getInstance () в / usr / local / bin / phpunit в строке 39 Трассировка стека PHP: PHP 1 . {main} () / usr / local / bin / phpunit: 0 - person Daniel Ribeiro; 24.11.2011
comment
Возможно, вы можете попробовать добавить / usr / local / zend / bin к пути по умолчанию с помощью следующей команды: export PATH = / usr / local / zend / bin: $ PATH и попробуйте запустить phpunit из любого другого места. - person erickthered; 29.03.2012

Я просто столкнулся с проблемой с mcrypt, когда пытался запустить phpunit.

Предупреждение не появляется, если вы запустите phpunit с sudo :)

sudo ./phpunit --version

PHPUnit 3.6.6 от Себастьяна Бергманна.

person Robert    schedule 02.01.2012