【问题标题】:PHP cannot load shared librariesPHP 无法加载共享库
【发布时间】:2026-01-24 11:05:02
【问题描述】:

我是在这个论坛上发帖的新手。希望我不会在这里犯任何社交错误。

我有:

  1. Linux 系统(64 位)
  2. 使用以下选项编译和安装php:

./配置 --enable-maintainer-zts --with-pdo-mysql --with-mysqli=mysqlnd --prefix=/etc/httpd/php --with-gd --with-config-file-path=/etc/httpd/php --禁用-cgi --with-zlib --with-gettext --with-gdbm --启用压缩 --enable-mbstring --with-zlib-dir=/usr/include --with-libxml-dir=/usr/lib64 --with-mcrypt=/usr/lib64 --with-jpeg-dir=/usr --with-png-dir=/usr --with-apxs2=/etc/httpd/bin/apxs --启用共享


  1. php.ini 具有以下设置:
extension_dir = "/usr/lib64/php/modules/"

extension=mongo.so
extension=curl.so
extension=json.so
extension=fileinfo.so
extension=gd.so
extension=mbstring.so
extension=mcrypt.so
extension=phar.so
extension=zip.so

  1. ls -l /usr/lib64/php/modules =

curl.so fileinfo.so gd.so json.so mbstring.so mcrypt.so mongo.so phar.so zip.so


  1. hello world PHP 应用程序 print_something.php 包含以下行:
<?php
echo "Hello world\n";
?>
  1. php版本为5.6.0

  2. 在命令行运行时:

    php print_something.php

我得到以下输出:

php print_something.php

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib64/php/modules/mongo.so' - /usr/lib64/php/modules/mongo.so: 未定义符号:第 0 行 Unknown 中的 file_globals

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib64/php/modules/curl.so' - /usr/lib64/php/modules/curl.so: 未定义符号:第 0 行未知中的 file_globals PHP 警告:

PHP 启动:无法加载动态库 '/usr/lib64/php/modules/json.so' - >/usr/lib64/php/modules/json.so:未定义符号:executor_globals in Unknown on line 0

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib64/php/modules/fileinfo.so' - /usr/lib64/php/modules/fileinfo.so:未定义符号:file_globals in l 第0行未知

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib64/php/modules/gd.so' - /usr/lib64/php/modules/gd.so: undefined symbol: core_globals in Unknown on line 0

PHP 警告:PHP > 启动:无法加载动态库 '/usr/lib64/php/modules/mbstring.so' - /usr/lib64/php/modules/mbstring.so:未定义符号:sapi_globals in l 第0行未知

PHP 警告:PHP 启动:mcrypt:无法初始化模块 Module 编译时使用模块 API=20090626 PHP 编译时使用模块 API=20131226 这些选项需要在 第0行未知

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib64/php/modules/phar.so' - /usr/lib64/php/modules/phar.so:未定义符号:sapi_globals in 第0行未知

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib64/php/modules/zip.so' - /usr/lib64/php/modules/zip.so:未定义符号:executor_globals in 第0行未知

世界你好


我真正需要的是 mongo.so(我添加了其他的只是为了确保它不仅仅是一个 mongo 问题)。我已经查看了关于未加载的 php 共享模块的一般搜索和特定搜索,但找不到有关如何解决此问题的任何答案。如果有人能解释为什么这些模块无法加载,将不胜感激。

【问题讨论】:

  • 您使用的是哪个操作系统?
  • 我使用的是 CentOS 2.6.32-431.20.3.el6.x86_64
  • 正确答案已经给出。

标签: php shared-libraries


【解决方案1】:

没有为您的 PHP 版本编译 PHP 扩展。

缺少符号也是如此,因为没有链接到正确的 PHP 版本。

错误示例:mcrypt

  • 使用模块 API=20090626 编译的模块
  • 使用模块 API=20131226 编译的 PHP
  • 这些选项需要匹配

解决方案:使用您的包管理系统更新 PHP 扩展以与 PHP 同步,或者使用 PHP、SDK 和您想要的扩展手动编译它们。

您可以在此处找到 Mongo 扩展程序:http://pecl.php.net/package/mongo

【讨论】:

  • 谢谢!虽然我仍然需要搜索才能找到我需要做的事情,但这是一个很好的线索!这是我的解决方案:我需要重新编译 mongo.so,并将以下参数添加到我的配置中:./configure --with-php-config=/usr/local/src/php/scripts/php-config (/usr/ local/src/php 是编译我的 php 源代码的地方)我还必须 chmod +x /usr/local/src/php/scripts/php-config 以便 .configure 可以找到脚本。当我进行 make install 时,它将 mongo.so 放在不同的目录中(不是 /usr/lib64/php/modules)......所以我需要编辑 php.ini extension_dir。重启httpd!
  • @JohnGunter 非常好的信息!在执行./configure 之前,还应该使用/usr/local/src/php/scripts/phpize 来构建正确的版本和API 字符串