PHP linux服务器报错 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/的解决方法!

本文描述了一个关于.htaccess文件中特定URL重写规则失效的问题及解决过程。作者发现涉及/info路径的重写规则不起作用,并最终通过创建一个空的/info目录解决了该问题。此外,文章还记录了一个与Xcache扩展加载失败相关的错误反复出现的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

晚上***.com换空间,搬迁到新的机子上,但是发现重写中http://www.***.com/info/ 和 http://www.***.com/info/public-227636.html 居然全都是直接指向 404文件。

自己检查才发确认重写htaccess中的/info这一段根本就没有生效,但是其他的,如/site /qiye /wuliu /geti 都是生效的。重写文件/.htaccess内容如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)\.(htm|inc)$ – [F,L]


#detail
RewriteRule ^info/public-(\d+).html$ baidu.com/info.php?id=$1 [L]
RewriteRule ^site/free-(\d+).html$ baidu.com/site.php?id=$1 [L]
RewriteRule ^qiye/company-(\d+)/?$ baidu.com/qiye.php?id=$1 [L]
RewriteRule ^wuliu/gongsi-(\d+)/?$ baidu.com/wuliu.php?id=$1 [L]
RewriteRule ^geti/shop-(\d+)/?$ baidu.com/geti.php?id=$1 [L]
RewriteRule ^member/userid-([^\/]+)/?$ baidu.com/member.php?uid=$1 [L]


还发现网站每个有PHP文件的目录下 error_log 文件不停的重复记录这个错误:

[24-Oct-2013 07:10:59 Europe/Moscow] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”: cannot open shared object file: No such file or directory in Unknown on line 0
[24-Oct-2013 07:10:59 Europe/Moscow] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”: cannot open shared object file: No such file or directory in Unknown on line 0
[24-Oct-2013 07:10:59 Europe/Moscow] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”: cannot open shared object file: No such file or directory in Unknown on line 0
[24-Oct-2013 07:10:59 Europe/Moscow] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”: cannot open shared object file: No such file or directory in Unknown on line 0
[24-Oct-2013 07:11:00 Europe/Moscow] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”: cannot open shared object file: No such file or directory in Unknown on line 0
[24-Oct-2013 07:11:00 Europe/Moscow] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”: cannot open shared object file: No such file or directory in Unknown on line 0


测试了很久,把htaccess文件删得只剩下最后那一条重写:

RewriteEngine On
RewriteRule ^info/public-(\d+).html$ baidu.com/info.php?id=$1 [L]


/info的这个重写还是是没有生效,其他的/site /member /qiye /wuliu 依旧是正常的。

真的快找不出原因,最后想到以前使用过的linux空间遇到过这样的情况:“如果htaccess重写涉及的目录真的存在会出错”,仔细找 /info这个目录根本就不存在的。

后来突发奇想,建立一个/info目录试试,结果居然解决了这个问题



------------------------------------------------------------------------------------------------

2013-10-24 补充:

今天偶然来发现,网站根目录下的/error_log文件居然多大了100多MB,而且每时每刻都在不停的增加。

才明白,原来上次解决的只是htaccess 重写问题,但这个的报错依旧是存在的。查阅了很多英文的资料,大部分都说是PHP版本的问题,需修改PHP.INI 或者安装xcache.so。

我的服务器的PHP版本:

PHP Version 5.3.23



现在发现更离谱的是,新建一个目录/a,新增文件 /a/phpinfo.php,访问一次这个phpinfo.php,error_log文件就记录一次:

[24-Oct-2013 07:16:22 Europe/Moscow] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/”xcache.so”: cannot open shared object file: No such file or directory in Unknown on line 0
phpinfo.php全部源码:

<?php
phpinfo();
?>

如果你也遇到了这个问题,希望回帖或发送邮件告诉我一下解决方法,我的邮箱 default.fu@foxmail.com 。






[root@yfw ~]# cd /www/wwwroot/szrengjing.com/chat [root@yfw chat]# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" PHP: syntax error, unexpected '(' in /www/server/php/56/etc/php-cli.ini on line 883 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/modulename.extension' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/modulename.extension: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.dll' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.dll: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.so' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/path/to/extension/msql.so' - /path/to/extension/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: copy(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in Command line code on line 1 Warning: copy(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in Command line code on line 1 PHP Warning: copy(): Failed to enable crypto in Command line code on line 1 Warning: copy(): Failed to enable crypto in Command line code on line 1 PHP Warning: copy(https://getcomposer.org/installer): failed to open stream: operation failed in Command line code on line 1 Warning: copy(https://getcomposer.org/installer): failed to open stream: operation failed in Command line code on line 1 [root@yfw chat]# php composer-setup.php PHP: syntax error, unexpected '(' in /www/server/php/56/etc/php-cli.ini on line 883 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/modulename.extension' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/modulename.extension: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.dll' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.dll: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.so' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/path/to/extension/msql.so' - /path/to/extension/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0 Could not open input file: composer-setup.php [root@yfw chat]# php composer.phar require ratchet/ratchet:0.3.6 PHP: syntax error, unexpected '(' in /www/server/php/56/etc/php-cli.ini on line 883 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/modulename.extension' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/modulename.extension: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.dll' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.dll: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.so' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/path/to/extension/msql.so' - /path/to/extension/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0 Could not open input file: composer.phar [root@yfw chat]# 报错了吧
最新发布
07-16
<think>我们正在解决PHP启动时无法加载shmop.so扩展库的问题。 用户的问题:PHP Warning: PHP Startup: Unable to load dynamic library 'shmop.so' 步骤: 1. 确认扩展是否存在:首先,我们需要确认shmop.so文件是否存在于PHP的扩展目录中。 2. 检查php.ini配置:确保在php.ini文件中正确启用了shmop扩展。 3. 检查扩展依赖:某些扩展可能需要其他系统库的支持,因此需要检查系统是否安装了必要的依赖。 4. 文件权限问题:确保PHP进程有权限读取shmop.so文件。 5. PHP版本和架构匹配:确保shmop.so扩展是为当前PHP版本和架构(例如,线程安全或非线程安全,32位或64位)编译的。 具体步骤: 第一步:定位扩展目录 我们可以通过以下命令找到PHP的扩展目录: php -i | grep extension_dir 或者 php -r "echo ini_get('extension_dir');" 第二步:检查扩展文件是否存在 在扩展目录中查找shmop.so文件(在Windows上是shmop.dll,但问题中给出的是shmop.so,所以可能是Linux系统)。 如果不存在,则需要安装该扩展。 第三步:检查php.ini配置 在php.ini文件中,应该有一行来加载shmop扩展。通常,它看起来像这样: extension=shmop 或者 extension=shmop.so 注意:在某些情况下,可能需要使用绝对路径。 第四步:检查依赖 使用ldd命令检查shmop.so的依赖(仅Linux): ldd /path/to/extension_dir/shmop.so 确保所有列出的库都已安装。 第五步:检查文件权限 确保shmop.so文件可以被运行PHP的用户(例如www-data或nginx用户)读取。 第六步:检查PHP版本和架构 使用命令 `php -v` 查看PHP版本。确保shmop.so扩展是为该版本编译的,并且与PHP的线程安全设置(如ZTS或非ZTS)匹配。 常见解决方法: 1. 安装shmop扩展: 在Linux上,如果扩展不存在,可以使用包管理器安装。例如,在Ubuntu/Debian上: sudo apt-get install php-shmop 注意:可能需要指定PHP版本,如php7.4-shmop。 2. 确保在php.ini中正确启用了扩展。如果使用包管理器安装,它可能会自动创建ini文件在conf.d目录中,但有时需要手动在php.ini中添加。 3. 如果扩展文件存在,但依赖不满足,安装缺失的库。 4. 如果扩展文件不存在,且无法通过包管理器安装,可能需要从源码编译该扩展。 5. 如果存在多个php.ini文件(例如,CLI和Web服务器使用不同的ini文件),确保修改了正确的ini文件。 6. 重启Web服务器(如Apache或Nginx)以使更改生效。 注意:错误信息通常出现在PHP启动时,所以检查的是PHP作为模块运行时的配置(对于Web服务器),而不仅仅是命令行配置。因此,需要确保修改的是Web服务器使用的php.ini。 如何确定Web服务器使用的php.ini? 创建一个php文件,内容为: <?php phpinfo(); ?> 然后通过浏览器访问该文件,查找“Loaded Configuration File”项。 如果问题仍然存在,请检查PHP错误日志以获取更多信息。 生成相关问题: 1. 如何检查PHP扩展是否已加载? 2.Linux上如何安装PHP扩展? 3. 如何为PHP编译扩展? 4. 如何解决PHP扩展的依赖问题? 5. 如何确认PHP使用的是哪个ini配置文件? 6. 为什么PHP扩展加载失败? 7. 如何查看PHP启动时的错误信息? 8. 如何为不同的SAPI(如CLI和FPM)配置不同的扩展?</think>### PHP启动时无法加载shmop.so扩展的解决方案 当PHP启动时出现`Unable to load dynamic library 'shmop.so'`警告,通常由以下原因导致。请按顺序排查: #### 1. **确认扩展文件存在** - 检查PHP扩展目录是否存在`shmop.so`文件: ```bash # 获取PHP扩展目录 php -r "echo ini_get('extension_dir');" # 检查文件是否存在 ls -l $(php -r "echo ini_get('extension_dir');") | grep shmop.so ``` - 如果文件不存在: - **Ubuntu/Debian**:安装扩展包 `sudo apt-get install php-shmop`(需替换为实际PHP版本,如`php8.1-shmop`) - **手动编译**: ```bash cd php-src/ext/shmop phpize ./configure make && sudo make install ``` #### 2. **检查php.ini配置** - 确保`php.ini`正确加载扩展: ```ini ; 正确写法(无需.so后缀) extension=shmop ``` - 使用以下命令确认加载的ini文件: ```bash php --ini | grep "Loaded Configuration File" ``` #### 3. **验证文件权限** - 确保PHP进程用户有权读取`shmop.so`: ```bash # 修改文件权限(示例) sudo chmod 644 /usr/lib/php/20210902/shmop.so ``` #### 4. **检查依赖项** - 使用`ldd`检查共享库依赖: ```bash ldd $(php -r "echo ini_get('extension_dir');")/shmop.so ``` - 若提示`not found`,安装缺失库(如`libc6-dev`)。 #### 5. **验证PHP版本兼容性** - 确认扩展与PHP版本匹配: ```bash # 检查PHP版本 php -v # 检查扩展编译信息 strings /path/to/shmop.so | grep PHP_VERSION ``` #### 6. **区分SAPI环境** - **Web服务器** vs **CLI** 可能使用不同配置: - 创建`phpinfo()`页面,检查Web环境实际加载的ini路径 - 确保Web服务器重启:`sudo systemctl restart apache2` 或 `sudo systemctl restart php-fpm` #### 7. **错误日志排查** - 查看详细错误日志: ```bash sudo tail -f /var/log/php/error.log ``` ### 常见修复场景 | 场景 | 解决方案 | |------|----------| | 扩展文件缺失 | 通过包管理器安装或手动编译 | | 错误配置`extension=shmop.so` | 修改为`extension=shmop` | | 权限不足(如`www-data`用户) | `chmod 644 shmop.so` | | 依赖库缺失(如`libc6`) | `sudo apt install libc6-dev` | | 版本不匹配(PHP升级后) | 重新编译扩展或安装新版包 | > **重要提示**:修改配置后必须重启Web服务(Apache/Nginx)和PHP-FPM进程[^1]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值