为什么我的PHP exec()在尝试调用Python函数时不能正常工作?

2024-05-08 17:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

HTML格式:

<form id ="nameForm" action="python.php" method="post" target="_blank">
     <label>First Name:</label><input type="text" id="firstName" name="firstName"><br>
     <label>Last Name:</label><input type="text" id="lastName" name="lastName"><br>
     <input type="submit" id="submitName" value="Submit">
</form>

菲律宾比索:

^{pr2}$

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()

请给我一些建议,看看可能出了什么问题。我对Python不熟悉,但这正是老板想要的。。。所以我要把它做好。谢谢!在


Tags: 文件namewebid表单inputoutputmain
3条回答

根据这个http://www.php.net/manual/en/function.passthru.php,您使用passthrough的方式是错误的。它是用于二进制数据的。。。在

This function should be used in place of exec() or system() when the output from the Unix command is binary data which needs to be passed directly back to the browser.

尝试Exec()。在

希望我能帮上忙。在

请确保您没有被safe mode阻止。在

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

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

echo $response;

如果问题仍然存在,您可以通过确保错误报告处于打开状态来进一步调查,方法是将以下内容放在PHP脚本的顶部:

^{pr2}$

我不知道它为什么不起作用,但您应该使用EscapeShellArgs和可能的EscapeShellCmd。在

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

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

相关问题 更多 >