php - 是什么导致消息 "Failed loading/usr/lib/php/modules/xdebug.so"("No such file or directory")?

标签 php xdebug ini

当我运行 php --version(在 CentOS 版本 6.4 上)时,我得到:

# php --version
Failed loading /usr/lib/php/modules/xdebug.so:  /usr/lib/php/modules/xdebug.so: cannot open shared object file: No such file or directory
PHP 5.4.19 (cli) (built: Aug 22 2013 08:03:53)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

“加载/usr/lib/php/modules/xdebug.so 失败:/usr/lib/php/modules/xdebug.so:无法打开共享对象文件:没有这样的文件或目录”的来源是什么消息?

我使用以下方法确认了我的 php.ini 文件的位置:

# php -a
Failed loading /usr/lib/php/modules/xdebug.so:  /usr/lib/php/modules/xdebug.so: cannot open shared object file: No such file or directory
Interactive shell

php > echo php_ini_loaded_file() . "\n";
/etc/php.ini

然后我在/etc/php.ini 中搜索“/usr/lib”:

# fgrep "/usr/lib" /etc/php.ini
zend_extension=/usr/lib64/php/modules/xdebug.so
extension_dir = "/usr/lib64/php/modules"

PHP 似乎没有配置(在 php.ini 中)以在/usr/lib/php/modules/中查找 xdebug.so。那么,为什么我会收到该错误消息?

更新:回应Sverri M. Olsen的评论建议 xdebug.so 的路径可能需要修复,我做了:

# fgrep "xdebug" /etc/php.ini
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=vmhostmachine
xdebug.remote_port=9000
xdebug.profiler_enable=1
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=/usr/xdebug
xdebug.profiler_append=1
xdebug.auto_trace=1
xdebug.trace_format=1
xdebug.collect_params=4
xdebug.collect_return=1
xdebug.trace_output_dir=/usr/xdebug
xdebug.trace_output_name=trace.%H.%t
xdebug.profiler_output_name=profile.%H.%t

而且我确认上面的 xdebug.so 路径是正确的:

# ls -lh /usr/lib64/php/modules/xdebug.so
-rwxr-xr-x 1 root root 200K May 21  2013 /usr/lib64/php/modules/xdebug.so

另请注意,Xdebug 有效。

最佳答案

在源自现代 Red Hat 发行版(例如 RHEL、Fedora 和 CentOS)的 GNU/Linux 系统中,PHP 发行版可能被分成主要的 .ini 文件,位于 /etc/php.ini 以及其他 .ini 文件的集合,这些文件特定于作为驻留在 /etc/php.d 中的 RPM 安装的扩展或包。在初始化时,PHP 将在加载主 php.ini 文件后读取 /etc/php.d/*.ini

您似乎有一个包含位于 /etc/php.d 中的 Xdebug 设置的陈旧文件。 Grep for Xdebug in /etc/php.d 找到违规者并将其删除或注释掉相关行。

grep xdebug /etc/php.d/*.ini

如果 Xdebug 是通过手动过程单独安装的,并且您手动修改了主要的 /etc/php.ini 以加载扩展并配置其设置,这将解释为什么 Xdebug 在您仍然可以工作的情况下仍能正常工作在 /usr/lib/php/modules/xdebug.so 查看关于它不存在的错误。如果将 /etc 中的配置文件从旧的 32 位系统复制到 64 位系统,其中模块驻留在 /usr/lib64/php/modules/中,这也可能发生p>

关于php - 是什么导致消息 "Failed loading/usr/lib/php/modules/xdebug.so"("No such file or directory")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104044/

相关文章:

php - 加水印后照片颜色丢失

php - 仅从给定字符串中删除第一个单词

php - 在管理员编辑器中更改数据库

php - 如何在 Laravel 5 中制作 HMVC?

php - 在 AMPPS 上启用 Xdebug 的问题

php - 如何让 xdebug 使用 cookie 而不是 $_GET 参数?

python - 使用 django 的 Web 服务器 ini 文件编辑器

php - 是否有用于调试 PHP 的 XDebug 替代方案?

delphi - 是否有与 TIniFiles 相同的函数或单元不会保存到文件?

delphi - 如何将配置信息放入可执行文件中?