PHP嵌入JavaScript代码在PHP5.6可用但PHP7报错的问题
PHP7环境下嵌入JS的PHP代码报错排查
问题场景
你这段在PHP5.6环境能正常运行的jPlayer配置代码,到PHP7里就抛出Uncaught SyntaxError: Unexpected token <错误,核心问题出在JS里嵌入PHP的写法上。
原来的嵌入代码片段是这样的:
mp3: <script language = "php"> echo "\"" . $MP3FILE . "\"";</script>
报错原因
PHP7彻底移除了对非标准脚本风格PHP标签的支持!
在PHP5.6及更早版本中,部分服务器可能开启了asp_tags配置项,这会让PHP识别<script language="php">...</script>这种非标准的嵌入标签。但PHP7开始,官方直接移除了asp_tags这个配置,导致服务器不再解析这种标签,直接把<script language="php">...</script>当成普通的文本输出到JS里。
JS解析器看到开头的<符号,完全无法理解这是什么语法,所以直接抛出"Unexpected token <"的语法错误。
解决方案
把所有非标准的PHP嵌入标签替换成PHP官方推荐的标准标签<?php ?>,这是跨PHP版本兼容性最好的写法。
修改后的代码片段可以是这样的:
mp3: <?php echo "\"" . $MP3FILE . "\""; ?>
或者用更简洁的方式,避免手动拼接引号,可读性更强:
mp3: "<?php echo $MP3FILE; ?>"
另外你已经确认服务器能正常处理PHP文件,所以只要替换标签写法就能解决问题。
内容的提问来源于stack exchange,提问作者Roger
相关产品推荐
相关产品推荐

