上一篇
本文目录导读:
🚨 场景重现:
某天你兴致勃勃地在CentOS服务器上部署PHP项目,结果访问页面时直接蹦出500 Internal Error!检查日志发现PHP Fatal error: Uncaught Error: Class 'XXX' not found
——明明已经安装了扩展,为啥就是加载不了?😤 别慌,这篇干货帮你揪出真凶!
📌 现象:php -m
列表中找不到扩展,或phpinfo()
页面空空如也。
🔧 解决:
sudo yum install php-扩展名
(如php-mysqlnd
)。 sudo pecl install 扩展名 # 编辑php.ini添加 extension=扩展名.so sudo systemctl restart php-fpm
./configure
时指定正确PHP路径,安装后检查/usr/lib64/php/modules/
是否存在文件。📌 现象:修改php.ini
后无效果,扩展仍未加载。
🔧 解决:
php --ini | grep "Loaded Configuration File"
extension_dir
是否指向扩展所在目录(如/usr/lib64/php/modules
)。 /etc/php.d/
下其他.ini
文件测试。📌 现象:扩展文件存在但无法加载,日志提示Permission denied
。
🔧 解决:
sudo chmod 755 /usr/lib64/php/modules/*.so sudo chown root:root /usr/lib64/php/modules/*.so
📌 现象:扩展安装成功但报错libXXX.so.X: cannot open shared object file
。
🔧 解决:
# 安装32位库(如报错提示) sudo yum install glibc.i686 # 或通过ldconfig更新缓存 sudo ldconfig
📌 现象:Apache/Nginx日志显示Permission denied
,且SELinux为Enforcing
模式。
🔧 解决(二选一):
sudo setenforce 0
sudo semanage fcontext -a -t httpd_sys_script_exec_t "/usr/lib64/php/modules/.*\.so" sudo restorecon -v /usr/lib64/php/modules/*.so
📌 现象:扩展安装后提示Undefined symbol: php_json_encode
。
🔧 解决:
php74w-pecl-redis
)。 update-alternatives
切换默认版本。tail -f /var/log/php-fpm/error.log # PHP-FPM日志 tail -f /var/log/httpd/error_log # Apache日志
php -m | grep 扩展名 # 命令行检测
ldd /usr/lib64/php/modules/扩展名.so
php -m | grep 扩展名
php --ini
+ ls /usr/lib64/php/modules/
sudo systemctl restart php-fpm httpd
💬 最后吐槽:
CentOS的PHP扩展问题就像拆盲盒——你永远不知道是权限、路径还是SELinux在搞事!但掌握上述排查套路,下次遇到直接Ctrl+F定位问题,效率拉满!🚀
本文由 业务大全 于2025-08-27发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://xdh.7tqx.com/wenda/751169.html
发表评论