PHP exec()或system()来调用和传递值

时间:2014-12-22 17:47:30

标签: php

我想调用一个外部php脚本,该脚本使用我正在使用的docx php文档创建者之一生成docx文件。

我想知道我是否应该使用exec('/path/to/script.php $pass_var1 $pass_var2 $pass_var3 $pass_var4 $pass_var5 $pass_var6');

system('/path/to/script.php $pass_var1 $pass_var2 $pass_var3 $pass_var4 $pass_var5 $pass_var6');

它会将$ pass_var1作为$ pass_var1传递给script.php吗?如果我在脚本中调用它?哪一个用于此目的的功能更好?

2 个答案:

答案 0 :(得分:1)

变量在双引号内扩展,而不是在单引号内。你需要使用

system("/path/to/script.php $pass_var1 $pass_var2 $pass_var3 $pass_var4 $pass_var5 $pass_var6");

此外,在设置所有escapeshellarg变量时,如果它们来自不受信任的用户输入,则可能需要使用$pass_varN

答案 1 :(得分:0)

您可能希望使用include或require将脚本直接集成到项目中。使用system()或exec()可能非常危险,因为它可能允许Web应用程序的用户执行Web服务器上的几乎任何操作。关于您的问题,我相信在What are the differences of system(), exec() and shell_exec() in PHP?

部分回答了问题

无论

exec("php -f /path/to/script.php $params")

或者

system("php -f /path/to/script.php $params")

应该工作