我有这个一个真正的问题,不能得到它的工作运行类似example.php?variable = 1的东西。
但是我可以使用exec命令获得一个单独的文件,最后没有?variable = 1。
我决定做的是根据我想发送的变量动态更改模板文件的内容。这个文件被称为template.php,并包含所有通常以$ _GET运行的代码。而不是使用$ _GET,将变量的值设置在顶部。这行代码然后被搜索并替换为您选择的任何值。
然后我保存了这个新文件并运行它。
在以下示例中,我需要更改SQL查询 - 模板文件的行$ sql =“ENTER SQL CODE HERE”;.我还需要更改顶部变量的值。 template.php中的行是$ myvar = 999999;下面的代码将template.php中的这些行更改为新值。
//Get the base file to modify - template.php
$contents=file_get_contents("template.php");
$sql="SELECT * FROM mytable WHERE foo='".$bar."'";
$contents=str_replace("ENTER SQL CODE HERE",$sql,$contents);
//Another search
$contents=str_replace("999999",$bar,$contents);
$filename="run_standalone_code".$bar.".php";
//If the file doesnt't exist, create it
if(!file_exists($filename)){
file_put_contents($filename, $contents);
}
//Now run this file
$cmd="/usr/local/bin/php ".$filename." >/dev/null &";
exec($cmd);
这是一个非常糟糕的方式来做到这一点。首先,它是escapeshellarg()而不是'addslashes()'。 – Christian 2011-04-11 09:42:32