Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';尝试调用Python函数时,我的PHP exec()是否正常工作?_Php_Python_Html_Command_Exec - Fatal编程技术网

为什么不是';尝试调用Python函数时,我的PHP exec()是否正常工作?

为什么不是';尝试调用Python函数时,我的PHP exec()是否正常工作?,php,python,html,command,exec,Php,Python,Html,Command,Exec,我正在编写一个使用HTML显示表单的web应用程序。然后用户完成表单,并在提交表单时将表单发送到PHP。在PHP文件中,我将其设置为对将返回数据的Python文件调用和exec()命令。但由于某种原因,我没有得到任何回报。当我在终端中执行命令时,它工作得很好,但我们在web浏览器中没有运行响应 HTML: Python: import sys def main(): firstName = sys.argv[1] lastName = sys.argv[2] outp

我正在编写一个使用HTML显示表单的web应用程序。然后用户完成表单,并在提交表单时将表单发送到PHP。在PHP文件中,我将其设置为对将返回数据的Python文件调用和exec()命令。但由于某种原因,我没有得到任何回报。当我在终端中执行命令时,它工作得很好,但我们在web浏览器中没有运行响应

HTML:

Python:

import sys

def main():
    firstName = sys.argv[1]
    lastName = sys.argv[2]

    output = ""

    output += "<html>\n"
    output += "  <head><title></title></head>\n"
    output += "  <body>\n"
    output += "      <p>Hi " + firstName + " " + lastName + "</p>\n"
    output += "  </body>\n"
    output += "</html>\n"

    print output

if __name__ == '__main__': main()
导入系统 def main(): firstName=sys.argv[1] lastName=sys.argv[2] output=“” 输出+=“\n” 输出+=“\n” 输出+=“\n” 输出+=“Hi”+firstName+“+lastName+”

\n 输出+=“\n” 输出+=“\n” 打印输出 如果uuuu name_uuuuuu=='uuuuuu main:main() 请就可能出现的问题给我一些建议。我是Python新手,但这正是老板想要的。。。所以我要让它工作。谢谢

根据这一点,您以错误的方式使用了passthrough。它用于二进制数据

当 Unix命令的输出是需要传递的二进制数据 直接返回浏览器

试试Exec()


希望我能帮上忙。

确保你没有被人拦住

确保你能逃避你的论点。尝试:

$response = shell_exec("/opt/http/PythonWeb/web/python pythonName.py " . escapeshellarg($firstName) . " " . escapeshellarg($lastName));

echo $response;
如果问题仍然存在,您可以通过将以下内容放在PHP脚本的顶部,确保启用了错误报告来进一步调查:

ini_set('display_errors', 1);
error_reporting(E_ALL);

我不知道为什么它不起作用,但你应该使用,而且可能

这些将保护您不受任何不可靠的用户输入的影响,并且它们通常有助于确保exec实际正常工作


另外,将要传递给“Exec”的字符串放入一个变量中,并回显该变量,然后将确切的输出剪切并粘贴到shell中,这通常有助于找出问题所在。

我觉得将PHP和Python混合使用有点傻。我建议您要么用Python编写应用程序,要么用PHP编写应用程序,但不能两者都用。您确定您的服务器允许
passthru
?如果是这样,当您使用一个更常见的内置命令进行尝试时会发生什么?你得到输出了吗?还可以尝试放置
错误报告(-1)嘿。。。谢谢你的建议。然而,我试过了,它仍然没有反应。
$response = shell_exec("/opt/http/PythonWeb/web/python pythonName.py " . escapeshellarg($firstName) . " " . escapeshellarg($lastName));

echo $response;
ini_set('display_errors', 1);
error_reporting(E_ALL);