CentOS 7下为Nginx环境的PHP启用dom、gd、PDO扩展以运行Drupal
这情况太常见了——CLI和Web服务器用的是两套完全独立的PHP配置!别慌,跟着下面的步骤来搞定:
第一步:找到Web环境用的PHP配置文件
先写个简单的phpinfo.php脚本:
<?php phpinfo(); ?>
把它放到你的Drupal网站根目录,然后通过浏览器访问这个文件(比如http://你的域名/phpinfo.php)。在页面里找到Loaded Configuration File这一项,记下它的路径(比如/etc/php/8.1/fpm/php.ini,不同系统和PHP版本会不一样)。
第二步:启用缺失的扩展
用编辑器打开刚才找到的php.ini文件,搜索以下几个扩展:
extension=dom(有些系统是extension=dom.so)extension=gd(或extension=gd.so)extension=pdo(或extension=pdo.so)
如果这些行前面有分号;(代表注释禁用),把分号去掉,保存文件。
注意:dom扩展通常包含在
php-xml包里面,如果你的系统里没装,得先安装对应的包,比如Ubuntu下跑sudo apt install php8.1-xml,CentOS下跑sudo dnf install php-xml(替换成你的PHP版本);gd和pdo同理,对应php-gd、php-pdo包。
第三步:确认扩展目录路径
在php.ini里找到extension_dir这一行,确保它指向的目录和CLI环境的一致。你可以先在命令行跑php -i | grep extension_dir拿到CLI的扩展目录,然后把Web配置里的extension_dir改成相同的路径,避免加载不到扩展文件。
第四步:重启PHP-FPM服务
因为Nginx是通过PHP-FPM来处理PHP请求的,所以修改配置后必须重启PHP-FPM才能生效:
- Ubuntu/Debian系统(以PHP8.1为例):
sudo systemctl restart php8.1-fpm - CentOS/RHEL系统:
sudo systemctl restart php-fpm
第五步:验证结果
再跑一遍你之前写的检测脚本,刷新浏览器看看输出——这时候dom、gd、pdo应该都显示OK了,Drupal的提示也会消失。
内容的提问来源于stack exchange,提问作者freeislandguy




