我正在编写一个应用程序,允许获得批准的开发人员将PHP代码提交给我们的数据库,以便稍后运行。PHP exec()不按预期工作
我试图实现一个系统,在他们的代码运行之前检查是否有任何问题。
我发现下面的代码在http://bytes.com/topic/php/answers/4819-before-eval-how-can-one-test-string-see-if-valid-php-code
function checkPHP($string) {
$string = escapeshellcmd($string);
exec("php -r \"$string\"",$output,$exit);
if($exit==0) return TRUE;
else return FALSE;
}
/* tests */
$test = array ("print ('foo');",
"print (\"foo\");",
"pint ('foo');",
"print ('foo);",
"print ('foo','bar');"
);
for($i=0;$i<sizeof($test);$i++) {
print $test[$i];
if(checkPHP($test[$i])) {
print " is ok.<br />\n";
} else {
print " not ok.<br />\n";
}
}
当我使用它,我得到:
打印( '富');没问题。
print(“foo”);没问题。
pint('foo');没问题。
print('foo);没问题。
print('foo','bar');没问题。
我运行的Apache 2.2/5.3.8 PHP安全模式关闭
安装模块可以是初步认识包括mod_suexec和mod_cgi一样。 – Ash
OT:了解'foreach' – cweiske