使用 php -l 验证语法 - 带有开始标记的行为
Using php -l to verify syntax - behavior w/ opening tags
我似乎找不到任何相关信息,我想知道是否有其他人遇到过这个问题或知道原因。
我有一些 PHP 代码,我试图在将其保存到数据库之前验证其语法。
我在 Ruby,但这并不重要。我正在使用 php -l
检查语法并清除它以保存或输出发生的任何语法错误。
这是较新的服务器安装,所以我猜问题出在需要安装的东西或 php.ini
中的设置需要调整。
如果 php 内容中有明显错误并以 <?
开头,PHP lint 函数不会捕获错误。
如果 php 内容有相同的明显错误并以 <?php
开头,PHP link 函数会捕获错误。
ruby 代码 -- 获取内容,将其放入临时文件,然后 运行 php -l 在临时文件上:
module PhpValidator
def validate_php
output = IO.popen("php -l", "r+") do |f|
f.puts self.content
f.close_write
f.read
end
if $? != 0
output.sub!("Errors parsing -", "")
errors.add(:content, "contains invalid PHP: #{output}")
end
end
end
然后在保存内容/php的模型中:
before_save :validate_php
示例 PHP returns 无效
<?
echo "test";
dsfaks;fjaskl;fkas0f9qiroawlsfkasdfa;'
?>
原来这是一个简单的问题。我看错了 php.ini
文件。
从命令行,我做了:
php -i | grep php.ini
找出哪个 php.ini 文件处于活动状态。
然后,往里看,我注意到:
short_open_tag
首选项设置为 Off
,需要 On
。
其次,当出现语法错误时,我得到了一个简单的 Errors parsing -
响应,这意味着我还需要在 php.ini 文件中打开 display_errors
。
一个简单的问题,我花了 5 分钟才想通,但我会把它留给下一个人。
我似乎找不到任何相关信息,我想知道是否有其他人遇到过这个问题或知道原因。
我有一些 PHP 代码,我试图在将其保存到数据库之前验证其语法。
我在 Ruby,但这并不重要。我正在使用 php -l
检查语法并清除它以保存或输出发生的任何语法错误。
这是较新的服务器安装,所以我猜问题出在需要安装的东西或 php.ini
中的设置需要调整。
如果 php 内容中有明显错误并以 <?
开头,PHP lint 函数不会捕获错误。
如果 php 内容有相同的明显错误并以 <?php
开头,PHP link 函数会捕获错误。
ruby 代码 -- 获取内容,将其放入临时文件,然后 运行 php -l 在临时文件上:
module PhpValidator
def validate_php
output = IO.popen("php -l", "r+") do |f|
f.puts self.content
f.close_write
f.read
end
if $? != 0
output.sub!("Errors parsing -", "")
errors.add(:content, "contains invalid PHP: #{output}")
end
end
end
然后在保存内容/php的模型中:
before_save :validate_php
示例 PHP returns 无效
<?
echo "test";
dsfaks;fjaskl;fkas0f9qiroawlsfkasdfa;'
?>
原来这是一个简单的问题。我看错了 php.ini
文件。
从命令行,我做了:
php -i | grep php.ini
找出哪个 php.ini 文件处于活动状态。
然后,往里看,我注意到:
short_open_tag
首选项设置为 Off
,需要 On
。
其次,当出现语法错误时,我得到了一个简单的 Errors parsing -
响应,这意味着我还需要在 php.ini 文件中打开 display_errors
。
一个简单的问题,我花了 5 分钟才想通,但我会把它留给下一个人。