Xdebug错误:"加载xdebug.so失败:xdebug.so:无法打开共享对象文件:没有这样的文件或目录"

 鉴佳熙萍 发布于 2023-01-18 08:55

我最近安装xdebug在我的服务器上,但限制它用于我们的测试站点,该站点使用它自己的php.ini文件.

例如,测试站点php.ini位于:

/home/test_site/public_html/subdomain_name/php.ini

在这个php.ini文件里面我有以下xdebug:

[XDebug]
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so

xdebug.profiler_append = 0

xdebug.profiler_enable = 1

xdebug.profiler_enable_trigger = 0

xdebug.profiler_output_dir = /home/test_site/xdebug

xdebug.profiler_output_name = "cachegrind.out.%s-%u.%h_%r"

现在,事情是,xdebug 工作正常,没有问题.

但是,在我们的主站点上,它也有自己的php.ini文件,例如位于:

/home/main_site/public_html/php.ini

在这个文件里面,我什么都没有xdebug.

现在,我最近在cpanel中设置了一个cron,用于main site:

php -f /home/main_site/public_html/cron_jobs/main_cron.php > /home/main_site/public_html/logs/main_cron.log 2>&1

现在,在检查日志文件中的cron输出后,我得到输出:

Failed loading xdebug.so:  xdebug.so: cannot open shared object file: No such file or directory

当主站点甚至不能加载xdebug时,为什么会出现此错误?

1 个回答
  • 即使您将两个站点分开并使用两个不同的php.ini文件,CRON仍将使用PHP-CLI配置使用的任何php.ini文件.因此,要弄清楚哪个php.ini CRON正在使用,这是要使用的命令:

    php -i | grep php.ini
    

    如果PHP-CLI碰巧使用的是你不希望它使用的php.ini文件(例如/usr/local/lib/php.ini),那么这将是弄清楚为什么你在日志中看到Xdebug错误的关键.

    事实证明该/usr/local/lib/php.ini文件设置了这两个值:

    extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626"
    zend_extension = "xdebug.so"
    

    这导致CRON运行的PHP脚本(即PHP-CLI)出错,因为zend_extensions需要模块的完整路径.这也在Xdebug文档中说明:http://xdebug.org/docs/install

    因此,要消除错误,只需注释掉该行(或只删除它).extension_dir只要您没有加载任何其他模块,您也可以注释掉或删除该行,例如:

    extension = memcached.so 
    

    2023-01-18 09:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有