无法使用ini_set关闭short_open_tag

时间:2011-04-12 09:48:52

标签: configuration php

我正在将一个javascript语法高亮显示器嵌入到一个PHP脚本中,该脚本读取源文件并回显它。 js荧光笔在一行上有这个字符串:

... [z,/^[^<?]+/], ...

此服务器上的short_open_tag已打开,字符串中的<?会混淆脚本并导致错误。我无法在php.ini或其他地方关闭。

我在同一个脚本中使用了ini_set('short_open_tag', '0');,但它没有生效。可能是什么问题?

修改

最后,我使用了Col Shrapnel在评论中建议的内容:
我将[z,/^[^<?]+/],更改为[z,/^[^<?php echo '<' .'?'; ?>]+/],

3 个答案:

答案 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

看来你的问题出在其他地方。