我这里有点乱。
Windows Server 2008 R1 + IIS6 + PHP5.3.10
我有一个PHP脚本,它连接到一个小的本地mssql数据库,执行搜索并将结果放入变量中。数据库中有6列,但只有4列值得传递。
我在这台服务器上有一个控制台python程序(2.7味道)。它需要4个参数(目标电子邮件地址,主题,正文和密钥(密钥是64个字母字符串)。然后,这个python程序将所有这些放入HTML模板(在程序本身中定义)并通过电子邮件发送给目标
好的 - 这些都可以单独使用!现在有趣的部分。我能让PHP启动这个python程序,它与php脚本位于同一个目录中并传递四个参数/参数吗?参数/参数可以包含空格。
答案 0 :(得分:1)
您正在寻找Exec。它将在控制台上运行命令并返回最后一行输出。如果你想要所有的输出,可选的第二个参数会给你。
正如埃尔蒂所说,消毒你的投入。永远不要将用户提供的数据直接传递给命令行。
答案 1 :(得分:1)
您可能希望使用exec()
或shell_exec()
来运行您的python脚本。同时使用escapeshellarg()
和escapeshellcmd()
来清理您的输入。这可能如下所示:
$escaped_cmd = escapeshellcmd('nameofexecutable.exe para1 para2 para3');
exec($escaped_cmd);
当然,您需要适当的权限才能运行可执行文件。