我目前在我的 python 脚本中使用 subprocess.call(["php", "test.php"])
来调用 PHP 脚本。
我想知道是否可以在调用脚本时将 $_GET
参数传递给脚本。如果可能的话,我会怎么做?
这就是我想要得到的:
"subprocess.call(["php", "test.php?i=3"])
"
这是我当前的代码:
测试.py
import subprocess
subprocess.call(["php", "test.php"])
测试.php
<?php
echo $_GET['i'];
?>
最佳答案
使用您的 Python 尝试以下操作,传入任意数量的参数。
subprocess.call(["php","-f","test.php","param0:value0", "param1:value1"])
现在在 PHP 中:
<?php
$_GET = array();
foreach($argv as $key => $pair) {
if ($key == 0) { //skip first element which is script name (test.php)
continue;
}
list($key, $value) = explode(":", $pair);
$_GET[$key] = $value;
}
这会为您手动解析 $argv
并填充 $_GET
,因此您只需修改 PHP 文件的开头即可。
如果您的键或值与 :
分隔符具有相同的值,则这是一个不完美的解决方案。更好的方法是通过 JSON 字符串传入参数。像这样的东西:
subprocess.call(["php","-f","test.php", json.dumps(your_dictionary)])
在 PHP 中
<?php
if ($argc > 1) {
$json_str = $argv[1];
$_GET = json_decode($json_str);
}
最后,按照 user574632 的建议,您可以使用以下 if
语句包装此代码,以确保它不会干扰您仍然将其作为网络脚本运行。
if (php_sapi_name() == 'cli') {
//execute in here *only* if run from the command-line
}
关于php - Python 脚本在传递 $_GET 参数时调用 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900794/