您可以使用exec()
这样的命令
$cmd = "php -q nah.php some args";
echo `$cmd`;
echo "lalal";
但是如果php文件无权访问exec()
cmd,并且我发现使用exec()
并不安全。
我能找到的替代件为popen()
和proc_open()
我可以在没有参数的popen()
中执行此操作,但我还想将一些参数(变量)传递给文件。
我该怎么做 - 激发文件并将参数(变量)一起传递?
答案 0 :(得分:0)
// foo.php
function foo(){
$var1 = $_GET['var1'];
$var2 = $_GET['var2']
//do something by variables
}
// bar.php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "foo.php?var1=XXXXXX&var2=XXXXXXXX");
//Also you could send your variables by post
//$data = array('var1' => 'XXXXXXXXXXXX', 'var2' => 'XXXXXXXXX');
//curl_setopt($ch, CURLOPT_URL, 'foo.php');
//curl_setopt($ch, CURLOPT_POST, 1);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
编辑
使用此
$postdata = http_build_query(
array(
'var1' => 'some content',
'var2' => 'doh'
)
);
// If use POST
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$file = file_get_contents('foo.php', false, $context);
// USE GET
$opts = array('http' =>
array(
'method' => 'GET',
'header'=>"Content-Type: text/html; charset=utf-8"
)
);
$context = stream_context_create($opts);
$file = file_get_contents('foo.php?'.$data, false, $context);
echo $file;
答案 1 :(得分:0)
据我所知,命令行参数只是命令的一部分,因此它们会进入第一个参数,就像任何其他程序执行函数一样。