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


PHP exec() or system() to call and pass value

我想调用一个外部 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 传递到脚本中.php作为 $pass_var1? 如果我在脚本中调用它? 用于此目的的函数是更好的?

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

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

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

您可能

希望使用包含或require将脚本直接集成到项目中。使用 system(( 或 exec(( 可能非常危险,因为它可能允许 Web 应用程序的用户在您的 Web 服务器上执行几乎任何内容。 关于你的问题,我相信这里有部分答案 system((、exec(( 和 shell_exec(( 在 PHP 中有什么区别?

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

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

应该工作