已安装PHP但Nginx无法执行PHP代码 疑与WP Local环境冲突
问题根源
WP Local(Local by Flywheel)部署的Nginx、PHP7、MySQL为应用级隔离环境,默认仅为应用内创建的WordPress站点目录配置PHP解析规则,Nginx默认站点路径/var/www/html没有配置PHP-FPM转发规则,且对应PHP-FPM进程默认不会作为系统服务常驻,因此会出现纯HTML页面正常加载、PHP代码无法执行直接输出源码或返回空白的现象。
操作步骤
- 启动PHP-FPM进程:打开WP Local,启动任意一个已创建的WordPress站点,拉起对应版本的PHP-FPM进程。
- 查询PHP-FPM监听地址:终端执行命令
ps aux | grep php-fpm,从输出结果中找到--listen参数对应的值,一般为两种形式:Unix Socket文件路径(格式类似/home/当前系统用户名/.config/Local/run/随机字符串/php-fpm.sock),或本地TCP端口(格式类似127.0.0.1:9007),记录该值备用。 - 修改Nginx默认站点配置:找到Nginx默认站点配置文件(通常路径为
/etc/nginx/sites-available/default,若为WP Local内置Nginx则在应用安装目录的conf文件夹下找对应默认站点配置),编辑/var/www/html对应的server块:- 确认根目录与首页索引配置正确:
root /var/www/html; index index.php index.html index.htm;- 在server块内添加PHP解析规则,将
fastcgi_pass的值替换为上一步记录的PHP-FPM监听地址:
location ~ \.php$ { include fastcgi.conf; # Socket监听用这行,替换成实际路径 fastcgi_pass unix:/实际查到的php-fpm.sock文件路径; # TCP端口监听用这行,替换成实际端口,和上面二选一 # fastcgi_pass 127.0.0.1:实际查到的端口号; } - 配置目录权限:终端执行命令给站点目录授予Nginx运行用户可读权限:
sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html - 校验并重载Nginx配置:
- 执行
nginx -t,确认输出配置语法正确、测试通过。 - 执行
nginx -s reload重载配置生效。
- 执行
- 功能验证:在
/var/www/html目录下新建test.php文件,写入<?php phpinfo();,浏览器访问对应地址,能正常显示PHP信息页即配置成功。
注意事项
- WP Local的PHP-FPM进程生命周期和应用内站点绑定,若退出WP Local或停止所有应用内站点,PHP-FPM进程会自动退出,外部站点会返回502错误,需保持至少一个WP Local内站点处于启动状态,也可手动将对应版本的PHP-FPM注册为系统服务实现自启。
- 若需要切换PHP版本,只需在WP Local内将任意站点切换到目标PHP版本,重新查询新的PHP-FPM监听地址,替换Nginx配置中的
fastcgi_pass值后重载Nginx即可。 - 不要修改WP Local自动生成的WordPress站点专属Nginx配置,避免原有本地WordPress站点运行异常。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

