【问题标题】:Python Script generates 500 Internal Server Error but code in different file works finePython 脚本生成 500 内部服务器错误,但不同文件中的代码工作正常
【发布时间】:2019-04-24 22:41:58
【问题描述】:

我有一个包含以下代码的 Python 脚本:

#! /home/flohosting/PythonTest/PythonTest/bin/python

print()
print("hello world!")

我在 GoDaddy VPS 上运行 Python 3.6。 Python 3.6 是一个虚拟环境。这个脚本工作得很好。当我在 Virtual Studio Code 中打开一个新文档时出现问题,从工作 .py 脚本中复制上面的代码,然后将其粘贴到新的 .py 脚本中,将脚本 CHMOD 上传到 755,然后尝试执行。然后我收到 500 内部服务器错误。这对我来说毫无意义。

我已经使用 PuTTY 登录到我的 SSH 并尝试 CHMOD a+x file_name.py 其中“file_name”是确切的文件名,但它仍然不起作用。我想不出其他任何东西来检查为什么该脚本在服务器上已存在 2 个多月的文件中有效,而不是在我上传的新脚本和 CHMOD 到 755 中。感谢您的任何建议。

编辑:脚本工作的链接是http://www.dockethound.com/bernard.py

非工作脚本的链接是http://www.dockethound.com/hello.py

编辑 2:我想出了一些办法,虽然我不知道为什么,但它正在工作。

使用 CuteFTP 9 时,我在“AUTO”上上传。我决定选择 ASCII,然后再次尝试上传。当我上传时,我收到一条错误消息,提示“这似乎是您要使用 ASCII 上传的二进制文件。您确定吗?”因此,由于某种原因,文件以二进制格式保存,或者被 CuteFTP 识别为二进制格式并以二进制格式上传,这会在尝试运行时导致 Apache 出现问题。但是如果是强制ASCII模式上传,问题就解决了。

贾罗德

【问题讨论】:

  • Web 程序的输出必须以Content-type 行开头。如果没有,您会收到 500 服务器错误。尝试添加print("Content-type: text/plain") 作为第一行。
  • 你能看一下服务器端的日志吗?也许这有更多关于这个问题的信息。另外,不清楚上面的脚本和你在服务器上做的事情有什么关系,因为上面的脚本与提供网络数据无关。
  • 如果你正在使用 CGI @JohnGordon 有一个很好的观点。
  • John - 它不必以它开头,因为 www.dockethound.com/bernard.py 上的脚本可以正常工作。 www.dockethound.com/hello.py 上完全相同的脚本根本不起作用。
  • 而bernard.py和hello.py的内容一样?那么可能是网络服务器配置问题。

标签: python vps


【解决方案1】:

在我的情况下,使用 CuteFTP 9 中的自动设置允许 CuteFTP 确定带有 .py 的文件类型是二进制文件,因此文件是通过二进制而不是 ASCII 传输的。强制 ASCII 解决了问题,然后进入 TOOLS->Global Options->ASCII types 并将 PY 添加到列表中解决了问题。

【讨论】:

  • 所以听起来这实际上不是问题,但您的行尾字符是问题。如果您将文件更改为使用“LF”结尾,我敢打赌即使在 BINARY 模式下您的问题也会消失。
  • @John Szakmeister - 谢谢。我现在将搜索如何在 Visual Studio Code 中更改为使用 LF 结尾。
猜你喜欢
  • 2011-07-04
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 2012-09-18
相关资源
最近更新 更多