当前位置: 首页 > 知识库问答 >
问题:

IOError:[Errno 2]从Web浏览器执行脚本时没有这样的文件或目录

长孙高远
2023-03-14

我刚刚开始学习python以及如何从浏览器执行脚本。我有一个示例脚本,我试图创建一个json文件并将脚本数据写入文件。下面是我的代码。当我从终端执行此脚本时,我能够看到文件被创建并将数据转储到文件中。但是当我尝试从Web浏览器执行相同的脚本时,我在我的apacheerror.log文件中看到错误为IOError:[Errno 2]没有这样的文件或目录。

这是我的代码,我使用的是python 2.7:

#!/usr/bin/python
import os
import json

data = {"price": "$10"}

filepath = '/tmp/'
filename = filepath + 'my_data.json'
os.path.join(filename)
f = open(filename, "w+") # error at this line 
json.dump(data, f)
f.close()


print "Content-type: text/html\n\n"
print '''
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />
<title>Sample Home Page</title>
</head>
<body>
'''

print '''
<h1>
<BR> SAMPLE TEXT
</h1>
</body>
</html>

错误:

[Sun Aug 19 13:19:15.913003 2018] [cgi:error] [pid 970] [client ::1:50818] AH01215: Traceback (most recent call last):: /var/www/html/python/test3.py
[Sun Aug 19 13:19:15.913177 2018] [cgi:error] [pid 970] [client ::1:50818] AH01215:   File "/var/www/html/python/test3.py", line 10, in <module>: /var/www/html/python/test3.py
[Sun Aug 19 13:19:15.913237 2018] [cgi:error] [pid 970] [client ::1:50818] AH01215:     f = open(filename, "w+"): /var/www/html/python/test3.py
[Sun Aug 19 13:19:15.913347 2018] [cgi:error] [pid 970] [client ::1:50818] AH01215: IOError: [Errno 2] No such file or directory: '/tmp/my_data.json': /var/www/html/python/test3.py
[Sun Aug 19 13:19:15.915809 2018] [cgi:error] [pid 970] [client ::1:50818] End of script output before headers: test3.py

                                                                                                                       3,9           Top

如果我错过了学习的东西,请帮助我。我在stackoverflow和web上搜索了解决方案。没有找到与我的问题相关的解决方案。

共有2个答案

慕容明煦
2023-03-14

您没有指定您使用的操作系统和HTTP服务器。这可能是相关的,因为我在Apache 2.4的CentOS 7.6下看到了与您类似的错误。

一个可能的原因可能是SElinux在CentOS下默认启用,它可以阻止CGI脚本访问某些目录。当我从运行Ubuntu的VM移植一个基于CGI的小型应用程序(一个简单的注册页面)时,我艰难地了解了这一点。它核心的CGI脚本用于将其输出写入/var/tmp/regreg子目录归“apache”用户所有,并具有775权限。这在Ubuntu下完美运行了多年,但给了我错误[Errno 2]CentOS下没有这样的文件或目录。(顺便说一句,这可能是@GLinBoy在Ubuntu 17.10下没有任何错误的原因。)

我快速而肮脏的解决方案是让CGI脚本将文件写入我的主目录下的目录(权限为777)。这对于只为内部客户机服务的小型VM来说已经足够好了,但考虑到潜在的安全隐患,不应该用于任何严重的情况。

齐高阳
2023-03-14

您的代码工作正常!我的系统(Ubuntu 17.10)没有任何错误。

 类似资料:
  • 我有一个shell脚本文件,我想从java运行。我的java工作空间目录与脚本的目录不同。 我收到此错误: 我在谷歌上搜索了一下,每一个解决方案都表明我在做正确的事情。 我试图把脚本文件放在src和Java项目的bin中,但它仍然说没有这样的文件或目录。 我做错了什么? 谢谢

  • 问题内容: 我有几个运行良好的python脚本,但是如果我尝试从bash运行它,一个脚本(截至今天上午)开始给我这个错误: : 无此文件或目录 我可以通过运行“破损”脚本并四处查看后,发现我的总体思路是,我的hashbang的行尾已更改(无提示),因此我查看了工作脚本的行尾并通过VI中的选项破坏了脚本,如该问题所示->在文本文件中查看行尾 两个文件似乎都以相同的字符(a )结尾,因此我对如何从此处

  • 我正在尝试使用python中的shutil将文本文件从一个文件夹复制到另一个文件夹。我写了以下几行: 但每次我调用此代码时,都会出现错误2。错误的回溯为

  • 问题内容: 我在下面的代码中将一些文本存储在主目录中的〜/ .boto文件中。 但是我得到这个错误: 这是代码: 问题答案: 您需要使用os.path.expanduser并使用以下命令打开以进行编写: os.path.expanduser(路径) 在Unix和Windows上,返回带有〜或〜user初始部分的参数替换为该用户的主目录。 在Unix上,如果设置了首字母〜,则由环境变量HOME代替;

  • python编码新手,出现以下错误 我可以查看测试数据。此位置使用的json hdfs dfs-ls/数据/测试数据。json' 回溯(最近一次调用last):文件“testdata.json”,第6行,in with open('hdfs:///data/testdata.json“)作为data\u文件:IOError:[错误号2]没有这样的文件或目录:”hdfs:///data/testda

  • 问题内容: 我在Windows中使用Code :: Blocks。 我创建了一个dll项目,试图获得一些JNI实践。 在javah生成的.h文件中,有#include jni.h,但是当我尝试对其进行编译时,它总是说jni.h:没有这样的文件或目录。 我认为这与classpath有关,但我不知道它是什么!可能是我必须更改Code :: Blocks的设置 有人可以帮我解决这个问题吗?非常感谢 编辑