我正在将一个javascript语法高亮显示器嵌入到一个PHP脚本中,该脚本读取源文件并回显它。 js荧光笔在一行上有这个字符串:
... [z,/^[^<?]+/], ...
此服务器上的short_open_tag已打开,字符串中的<?
会混淆脚本并导致错误。我无法在php.ini或其他地方关闭。
我在同一个脚本中使用了ini_set('short_open_tag', '0');
,但它没有生效。可能是什么问题?
修改
最后,我使用了Col Shrapnel在评论中建议的内容:
我将[z,/^[^<?]+/],
更改为[z,/^[^<?php echo '<' .'?'; ?>]+/],
答案 0 :(得分:11)
'short_open_tag'在PHP&lt; 5.3.0中被标记为PHP_INI_PERDIR,这意味着你不能 用ini_set()改变它。
答案 1 :(得分:3)
根据对this manual page的评论:
libkhorse at gmail dot com 06-Aug-2009 7点14分:
对于'short_open_tag',尽管如此 在changable中标记为PHP_INI_ALL 专栏,你应该注意到 CHANGE_LOG列也是:
PHP中的PHP_INI_ALL&lt; = 4.0.0。 PHP中的PHP_INI_PERDIR&lt; 5.3.0
从4.0开始,如果你这样做将不起作用 想使用ini_set('short_open_tag')来 随时改变它的价值。
请尝试使用.htaccess
:
php_flag short_open_tag off
答案 2 :(得分:2)
我看到你的荧光笔与关闭短开标签之间没有关联。
如果您的某些代码与短标记混淆,则必须手动重写代码,将短标记替换为长标记。或者至少运行一些代码来做到这一点 但是没有配置设置会为你做。
此外,我认为JavaScript代码无法使用所有这些短标记或长标记读取PHP文件 source 。
看来你的问题出在其他地方。