我有一台运行 CentOS7、PHP7.0.7(带 php-fpm 和 SELinux)的服务器。我正在尝试调试在该服务器上运行的 PHP 脚本。我还有一台运行 PHPstorm 的 Mac 机器,我打算在上面进行调试。
这是我所做的:
1)安装xdebug到服务器
2)设置 xdebug 配置如下:
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host="localhost"
xdebug.remote_port=9099
xdebug.remote_handler=dbgp
xdebug.remote_autostart=1
xdebug.idekey="PHPSTORM"
3)将 ssh 配置设置为:AllowTcpForwarding yes(然后我将其恢复为没有帮助)
4)重新启动 php-fpm、sshd 和 httpd
5)在我的本地终端中,使用指定的 -R 标志打开与服务器的 ssh 连接
$ ssh -R 9099:localhost:9099 user@host
6)更改了 phpstorm 中的 xdebug 配置以监听端口 9099,并在 index.php 中设置断点
7)在浏览器中打开网站
但是我的本地 xdebug 仍然没有在断点处停止。
这个配置中我可能缺少什么?
可能是 SElinux 阻止了调试?
答案1
这是一个老问题,但我还是会把它留在这里,
因为它至少可以帮助人们解决问题
setsebool -P httpd_execmem 1
启用后,此布尔值允许 httpd 执行需要可执行和可写入内存地址的程序。从安全角度来看,不建议启用此布尔值,因为它会降低对缓冲区溢出的保护,但是某些模块和应用程序(例如 Java 和 Mono 应用程序 - 正如我今天所了解到的,调试) 需要此权限。