Отсутствуют заголовочные файлы с «Make» при попытке собрать Xdebug для PHP - PullRequest
1 голос
/ 27 января 2011

Я пытаюсь установить Xdebug на машине Linux для удаленной отладки PHP.Я столкнулся с рядом проблем, пытаясь его построить, я, кажется, решил некоторые, но сейчас я чувствую себя застрявшим.Краткое описание, «make» не завершается успешно, говорит, что не может найти zend_config.h или TSRM_config.h.Не знаю, как их получить.

Более подробное объяснение: (заметьте, я не очень разбираюсь в Linux, поэтому, если вы видите что-то, что я сделал, это явно неправильно, пожалуйста, дайте мне знать)

Я пытаюсь следовать инструкциям, которые я получил здесь при предоставлении моих данных phpinfo () (см. Конец сообщения).Первоначально я получал ряд ошибок, подобных этим, когда пытался «сделать»:

Error: ‘ZEND_USER_OPCODE_DISPATCH’ undeclared (first use in this function)
Error: ‘ZEND_RAISE_ABSTRACT_ERROR’ undeclared (first use in this function)
Etc.

Я предполагал, что это не phpize'd с правильной версией Zend (если я формулируюэто правильно).Возвращаясь к шагу phpize, возвращаемые версии не совпадают с phpinfo ().Вместо того, чтобы видеть:

PHP Api Version:            whatever 
Zend Module Api No:         20060613 
Zend Extension Api No:      220060519 

Вместо этого я вижу:

PHP Api Version:            20020918 
Zend Module Api No:         20020429 
Zend Extension Api No:      20050606 

Чтобы усложнить ситуацию, я использую старую версию XAMPP (1.6.8a), которая позволяет мнепереключаться между PHP 4.4.9 и PHP 5.2.6 (в настоящее время попытка перехода версий PHP на моей работе и отладка действительно ускорит процесс).В настоящее время у меня работает режим PHP5.Проверяя / opt / lampp / bin / phpize, я вижу, что это символическая ссылка на «phpize-5.2.6».Я предполагаю, что XAMPP просто переключает ссылку в зависимости от версии PHP, с которой ему было приказано запускаться.В любом случае, эта часть выглядит нормально, и я запускаю phpize-5.2.6 для проверки работоспособности и все еще получаю старые номера версий.Теперь php-config настроен аналогично, при запуске php-config --version возвращает «5.2.6», что просто отлично.

Я делаю еще несколько копаний и перебираю этот пост (2-й до последнего в теме).В итоге я загружаю исходный код PHP для версии 5.2.17 (надеюсь, это достаточно близко) и создаю программную ссылку, как описано в теме.Версии phpize теперь выглядят намного лучше и соответствуют тому, что сайт Xdebug говорит, что я должен увидеть:

PHP Api Version:        20041225 
Zend Module Api No:     20060613 
Zend Extension Api No:  220060519 

«Make» теперь выдает ошибки отсутствующего файла заголовка, перечисленные выше.Я вижу этот пост и решаю поиграться с моим файлом конфигурации.

Я закомментировал

-no-create | --no-create | --no-creat | --no-crea | --no-cre \ <br/>
  | --no-cr | --no-c | -n) 
    no_create=yes ;; 

И удалил - no-create из этой строки:

set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion

Все еще не повезло.Я предполагаю, что configure должен создать эти файлы конфигурации или что-то в этом роде?Не уверен, что попробовать дальше.Если это помогает, я использую SUSE SLES 10. Спасибо.

Xdebug custom generated install instructions: 
SUMMARY 
•  Xdebug installed: no 
•  Server API: Apache 2.0 Handler 
•  Windows: no 
•  Zend Server: no 
•  PHP Version: 5.2.6 
•  Zend API nr: 220060519 
•  PHP API nr: 20060613 
•  Debug Build: no 
•  Thread Safe Build: no 
•  Configuration File Path: /opt/lampp/etc 
•  Configuration File: /opt/lampp/etc/php.ini 
•  Extensions directory: /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613 
INSTRUCTIONS 
1.  Download xdebug-2.1.0.tgz 
2.  Unpack the downloaded file with tar -xvzf xdebug-2.1.0.tgz 
3.  Run: cd xdebug-2.1.0 
4.  Run: phpize 
As part of its output it should show: 
Configuring for: 
... 
Zend Module Api No:      20060613 
Zend Extension Api No:   220060519 
If it does not, you are using the wrong phpize. Please follow this FAQ entry and skip the next step.  
5.  Run: ./configure  
6.  Run: make 
7.  Run: cp modules/xdebug.so /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613 
8.  Edit /opt/lampp/etc/php.ini and add the line 
zend_extension = /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so 
9.  Restart the webserver 

Ответы [ 2 ]

0 голосов
/ 28 января 2011

Получается, что мне нужен был дополнительный флаг при запуске configure:

- включить-Xdebug

Довольно просто, но инструкции, которые я использовал, никогда не упоминали об этом. Об этом узнал только после просмотра архива списка обсуждений Xdebug.

Обратите внимание, что хотя "make", казалось, работал без ошибок в первый раз, когда я сделал это, я все еще не получил файл xdebug.so в modules /. Затем я произвел «make clean», снова запустил phpize, настроил и затем сделал make, на этот раз я получил файл.

0 голосов
/ 27 января 2011

Похоже, вы используете старую версию PHP, что может означать, что вы используете пакет PHP из своего дистрибутива linux.

Если это так, сначала проверьте, содержит ли ваш дистрибутив пакет xdebug. Если нет, вам может потребоваться установить пакет php * -dev или php * -devel, чтобы построить модуль.

...