Linux

無法安裝 xdebug - 未定義符號:zend_post_startup_cb

  • April 14, 2021

我解除安裝了 php7apt-get purge php並再次安裝了zypper in php7 php7-mysql.

然後我按照 xdebug 的安裝說明重新啟動了 apache systemctl restart apache2,但我的 apache 中沒有 xdebug phpinfo(),只有一些 HTTP_HEADER 出現,例如 (XDEBUG_SESSION=netbeans-xdebug;)

這是我在 php.ini 中的配置:

[xdebug]
zend_extension = /usr/lib64/php7/extensions/xdebug.so
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_handler="dbgp"
xdebug.remote_host="192.168.40.161"
xdebug.remote_port=9000
xdebug.remote_mode=req
xdebug.idekey="netbeans-xdebug"
xdebug.renite_enable = 1
xdebug.max_nesting_level = 1000
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = '/var/log/xdebug'

該文件/usr/lib64/php7/extensions/xdebug.so確實存在,我只是從原始碼安裝 xdebug 並將 xdebug.so 從復製modules/xdebug.so/usr/lib64/php7/extensions/

我什至重新啟動了整個伺服器。

我怎樣才能解決這個問題?

更新:

我檢查了 apache2 錯誤日誌/var/log/apache2/error_log,發現這是在重新啟動 apache2 服務後立即記錄的:

[Tue Jul 30 14:25:08.674685 2019] [mpm_prefork:notice] [pid 4862] AH00170: caught SIGWINCH, shutting down gracefully
AH00558: httpd-prefork: Could not reliably determine the server's fully qualified domain name, using 192.168.40.44. Set the 'ServerName' directive globally to suppress this message
[Tue Jul 30 14:25:08.758551 2019] [ssl:warn] [pid 5060] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
Failed loading /usr/lib64/php7/extensions/xdebug.so:  /usr/lib64/php7/extensions/xdebug.so: undefined symbol: zend_post_startup_cb
[Tue Jul 30 14:25:08.765786 2019] [mpm_prefork:notice] [pid 5060] AH00163: Apache/2.4.33 (Linux/SUSE) OpenSSL/1.1.0i-fips PHP/7.2.5 configured -- resuming normal operations
[Tue Jul 30 14:25:08.765815 2019] [core:notice] [pid 5060] AH00094: Command line: '/usr/sbin/httpd-prefork -D SYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d//loadmodule.conf -C Include /etc/apache2/sysconfig.d//global.conf -f /etc/apache2/httpd.conf -c Include /etc/apache2/sysconfig.d//include.conf -D SYSTEMD -D FOREGROUND'

=>Failed loading /usr/lib64/php7/extensions/xdebug.so: /usr/lib64/php7/extensions/xdebug.so: undefined symbol: zend_post_startup_cb

我能夠通過執行安裝它sudo apt-get install php-xdebug。我想知道如果我嘗試通過官方方式手動安裝並通過原始碼安裝它,為什麼它不起作用……??

但是,我在 NetBeans 中得到“等待連接”並且沒有任何反應,但這是另一個問題……

就我而言,由於我使用 php7.2 並且在我的 Ubuntu 上安裝了另一個 PHP 版本,所以我必須安裝正確版本的 xdebug。

我按照官方網站給出的步驟操作:https ://xdebug.org/wizard 。

但是我必須更改一些語法以使用正確的 PHP 版本,例如phpize需要更改為phpize-7.2並使用特定php-config版本來執行如下./configure步驟:

./configure --with-php-config=/usr/bin/php-config7.2

參考:http ://ubuntuhowtoo.blogspot.com/2020/06/php-xdebug-multi-php-versions-in-server.html

引用自:https://serverfault.com/questions/977257