ThinkPHP在CentOS上运行必需php72w-mbstring、php72w-mysqlnd、php72w-intl等扩展,缺一导致500或白屏;需用Webtatic源安装,重启php72w-fpm并验证php think env:check。

在CentOS系统上部署ThinkPHP项目时,PHP 7.2+环境必须安装指定扩展才能正常运行路由、数据库、多字节字符串、时区、国际化等核心功能,缺一不可,否则访问直接报500或白屏。
确认PHP版本与安装源
执行 php -v 查看当前PHP版本。若显示低于7.2或提示命令未找到,说明未安装或路径未加入环境变量。
执行 rpm -qa | grep php 检查是否残留旧版PHP包,如有则先清除:yum remove php* -y。
添加Webtatic源(必须顺序执行):rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm;【不装此源将无法识别php72w系列包名】
立即学习“PHP免费学习笔记(深入)”;
安装PHP 7.2核心扩展(yum一键法)
运行以下命令一次性安装ThinkPHP必需的全部扩展:
yum install -y php72w-cli php72w-fpm php72w-common php72w-devel php72w-gd php72w-mbstring php72w-mysqlnd php72w-pdo php72w-xml php72w-opcache php72w-bcmath php72w-intl php72w-zip
其中 php72w-intl 是ThinkPHP 6+多语言和日期格式化依赖,php72w-bcmath 是支付类模块必需,php72w-zip 是Composer自动加载和资源压缩所用。
安装完成后,重启PHP-FPM服务:systemctl restart php72w-fpm;若服务名是 php-fpm,请改用 systemctl restart php-fpm。
手动编译安装缺失扩展(如intl未生效)
方法一:验证intl是否真正启用
创建临时文件 /tmp/test-intl.php,内容为 <?php var_dump(extension_loaded('intl'));,执行 php /tmp/test-intl.php。若输出 bool(false),说明intl虽已安装但未加载。
方法二:检查php.ini中extension路径是否正确
执行 php --ini 查看加载的配置文件路径,打开对应 php.ini,确认存在如下两行且未被注释:
extension_dir = "/usr/lib64/php/modules/"
extension=intl.so
注意:不同PHP安装方式路径差异极大,/usr/lib64/php/modules/ 是Webtatic RPM包默认路径;若用源码编译安装,则可能是 /usr/local/php/lib/php/extensions/no-debug-non-zts-xxxxx/,需用 find / -name intl.so 2>/dev/null 精确定位。
方法三:强制重载配置
修改完php.ini后,必须重启PHP-FPM进程,仅 reload 不生效;执行 systemctl restart php72w-fpm 或 kill -USR2 $(cat /var/run/php-fpm/php-fpm.pid)(取决于实际pid文件位置)。
验证ThinkPHP运行依赖
第一步:进入你的ThinkPHP项目根目录
第二步:执行 php think version,正常应输出类似 v6.1.4 的版本号
第三步:执行 php think env:check(ThinkPHP 6.1+内置命令),该命令会逐项检测 mbstring、openssl、pdo_mysql、intl、json、curl 等12项扩展是否就绪
第四步:若某项标红失败,例如 [FAIL] intl —— PHP Internationalization extension is not loaded,回到上一节检查intl.so路径与php.ini配置
第五步:确认 storage 和 runtime 目录权限为可写:chown -R apache:apache runtime storage(Apache用户)或 chown -R nginx:nginx runtime storage(Nginx用户)



















