-1

该文件存在。我只是用这个语句验证文件的语法。

exec("php -l $file", $error, $exit);

如果没有错误,它应该设置 $exit = 0 。换句话说,文件中的语法是正确的。但是在我的情况下,它将 $exit 设置为 5 并将 $error 设置为空数组。我想知道这是怎么回事。提前致谢。

另外,我正在使用 MAMP。PHP5.3。$file 是文件内容的哈希字符串。$code 是 file_get_contents() 函数获取的文件内容的字符串。我认为 $translatedFile 和 $error 在我的问题中并不重要。

function validateSyntax($code,$translatedFile,  &$error){
        $translatedFile = $this->getTranslatedLanguageFile($translatedFile);
        $file = 'cache/'.md5(time());
        file_put_contents( $file, $code);
        exec("php -l $file",$error,$exit);
        foreach($error as $k=>$v){
            $error[$k] = str_replace($file, $translatedFile, $v);
        }
        unlink($file);
        if($retcode==0)return true;
        return false;
    }
4

1 回答 1

1

您正在引用所有参数,而不仅仅是在命令周围使用引号并传递最后两个参数。您最有可能在寻找

exec("php -l $file", $error, $exit);
于 2012-06-04T17:08:33.223 回答