You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CentOS 7下为Nginx环境的PHP启用dom、gd、PDO扩展以运行Drupal

解决Nginx下Drupal所需PHP扩展在Web环境不生效的问题

这情况太常见了——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-gdphp-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

火山引擎 最新活动