Web应用迁移至LWS服务器后PHP代码无法正常解析的问题咨询
LWS迁移后PHP代码不解析问题排查
核心根因
结合你给出的测试代码,触发解析失败的原因非常明确:
- 测试代码写的是
<? php echo 'Hello';,<?和后面的php之间多了一个空格——这种写法从PHP 5.4开始就不再被识别为合法的PHP代码块起始标记,哪怕开了短标签支持也匹配不上 - LWS默认的PHP配置里,短标签解析开关
short_open_tag是关闭状态,根本不认<?开头的代码,只认<?php开头的标准标记 - 另外LWS新建站点的默认配置,有时不会自动把
.php后缀的请求绑定到PHP-FPM服务,会直接把PHP代码当静态文本吐给浏览器,完全不触发解析流程。
分步解决
- 先改测试代码验证基础链路
把测试文件里的代码换成标准写法:<?php echo 'Hello'; ?>
存盘刷新页面,要是能正常输出Hello,就说明之前的写法不符合当前服务器的解析规则。 - 改完代码还是不输出的话,查站点绑定配置
到LWS的站点管理面板,确认两个点:- 当前站点有没有配置
.php后缀的请求转发规则,把这类请求交给对应版本的PHP-FPM处理 - 如果缺失规则,手动加一条匹配
*.php的路由,转发到当前正在运行的PHP服务端口就行
- 当前站点有没有配置
- 老项目兼容短标签的可选操作
要是手里的老项目全是用<?开头的短标签写的,不想逐行改代码,可以找到对应PHP版本的php.ini配置文件,把short_open_tag的值改成On,存盘后重启PHP-FPM,就能恢复短标签解析。
特别提醒:带空格的<? php写法就算开了短标签也识别不了,必须把空格去掉写成标准的<?php格式才行。
内容的提问来源于stack exchange,提问作者Willson Vulembere
相关产品推荐
相关产品推荐

