允许python脚本创建文件的最佳/最简单的Apache服务器/文件夹设置是什么?


What are best/easiest Apache server/folder settings for allowing a python script to create a file?

我在文件夹"fold"中有一个简单的Python脚本,它是从PHP文件启动的。它在同一目录下创建一个文件,然后退出到PHP。

f = open("t.txt","w")
f.write("test")
f.close()

可以在PHP中调用:

$proc=proc_open("fold/simple.py",array(0=>array('pipe','r'),1=>array('pipe','w'),2=>array('pipe','w')),$pipes);

execute("python fold/simple.py");

等。

在我看来合乎逻辑的设置是:

  • 我在文件夹和python文件的所有者中添加了apache组。
  • 我允许在该文件夹上写组。
  • 我将python文件设置为可执行的。

这看起来很正常,对吗?然而,从PHP报告的错误是没有写权限。我还测试了用户从PHP使用:

echo 'current user :'.exec('whoami');

,它是"apache",显然它属于谐音组。

那么,我哪里做错了,什么样的设置能满足最好和最简单之间的平衡?谢谢!

根据我的经验,我建议您创建一个目录,该目录仅用于由您的程序创建文件,可能是文件或其他东西,并将权限设置为777(chmod -R 777文件),其他目录应该是755,出于安全原因。

大家都说了,一般情况下设置777权限的目录是不好的!如果你知道你的脚本在哪里工作,这是没有必要的!

但是,回答你的问题,解决方案应该是改变apache:apache的权限到你想写的文件夹,更重要的是,不要依赖于你想要运行/读/写的文件的相对路径,但总是指定一个绝对路径:在python中,你可以在你想要写的文件名前加上…

from os.path import dirname, abspath
basedir = dirname(abspath(__file__)) + '/'