Python 中打开文件的 Apache 权限错误
Apache Permission Error on open file in Python
我是网页设计的新手,我正在尝试为某些 python 代码设置 Apache 网页界面。
我正在 运行 测试 python 脚本,它只是在 /var/www/html/ 中打开一个名为 output.txt 的新文件并尝试写入它。加载网页时,我使用 shell_exec('/usr/bin/python3 /var/www/html/ptest.py');
到 运行 我的 python 脚本。 python 脚本执行 运行 并输出一些打印消息,但尝试打开 output.txt 失败并显示:
回溯(最近调用最后):文件“/var/www/html/ptest.py”,第 8 行,在 f=open(“/var/www/html/output.txt”, “w”)PermissionError:[Errno 13] 权限被拒绝:'/var/www/html/output.txt'。如果文件已经存在并且我打开阅读它也会失败。
我已经确认该脚本由 apache getpass.getuser()
运行 执行,并且我已经为 /var/www/html/ 尝试了尽可能多的不同权限组合,包括777. 我已将 apache 设置为从 /var/ 到 html/ 的每个目录的组。我已经尝试使用 777 权限提前创建文件。我已经检查过 /var/ 到 html/ 具有组执行权限。
我尝试创建和使用另一个完全由 apache 拥有的文件夹。
我已经查看了 apache 指令,看看是否有我需要的指令,但我还没有找到。
我在下面包含了我的 python 脚本和我的 php 页面的代码。
编辑:我已经尝试 运行ning ptest.py 作为 apache 使用 su -s /bin/bash apache
。
ptest.py 以这种方式成功 运行,所以问题似乎不是与 apache user/group.
关联的权限
ptest.py
#!/usr/bin/python3
import sys
import getpass
import os
sys.stderr = sys.stdout
print(getpass.getuser())
print(os.getgid())
f = open("/var/www/html/output.txt", "w")
f.write("banana")
f.close()
print("I wrote banana, which is a berry")
banana.php
<html>
<head></head>
<body>
<h2>Welcome to the Program Test</h2>
<?php
echo "Created Command", "<br>";
$output = shell_exec('/usr/bin/python3 /var/www/html/ptest.py');
echo "Executed Command", "<br>";
echo $output, "<br>";
echo "End of output", "<br>";
$output = shell_exec('ls /var/www/html/');
echo $output;
?>
</body>
</html>
我是网页设计的新手,我正在尝试为某些 python 代码设置 Apache 网页界面。
我正在 运行 测试 python 脚本,它只是在 /var/www/html/ 中打开一个名为 output.txt 的新文件并尝试写入它。加载网页时,我使用 shell_exec('/usr/bin/python3 /var/www/html/ptest.py');
到 运行 我的 python 脚本。 python 脚本执行 运行 并输出一些打印消息,但尝试打开 output.txt 失败并显示:
回溯(最近调用最后):文件“/var/www/html/ptest.py”,第 8 行,在 f=open(“/var/www/html/output.txt”, “w”)PermissionError:[Errno 13] 权限被拒绝:'/var/www/html/output.txt'。如果文件已经存在并且我打开阅读它也会失败。
我已经确认该脚本由 apache getpass.getuser()
运行 执行,并且我已经为 /var/www/html/ 尝试了尽可能多的不同权限组合,包括777. 我已将 apache 设置为从 /var/ 到 html/ 的每个目录的组。我已经尝试使用 777 权限提前创建文件。我已经检查过 /var/ 到 html/ 具有组执行权限。
我尝试创建和使用另一个完全由 apache 拥有的文件夹。
我已经查看了 apache 指令,看看是否有我需要的指令,但我还没有找到。
我在下面包含了我的 python 脚本和我的 php 页面的代码。
编辑:我已经尝试 运行ning ptest.py 作为 apache 使用 su -s /bin/bash apache
。
ptest.py 以这种方式成功 运行,所以问题似乎不是与 apache user/group.
关联的权限ptest.py
#!/usr/bin/python3
import sys
import getpass
import os
sys.stderr = sys.stdout
print(getpass.getuser())
print(os.getgid())
f = open("/var/www/html/output.txt", "w")
f.write("banana")
f.close()
print("I wrote banana, which is a berry")
banana.php
<html>
<head></head>
<body>
<h2>Welcome to the Program Test</h2>
<?php
echo "Created Command", "<br>";
$output = shell_exec('/usr/bin/python3 /var/www/html/ptest.py');
echo "Executed Command", "<br>";
echo $output, "<br>";
echo "End of output", "<br>";
$output = shell_exec('ls /var/www/html/');
echo $output;
?>
</body>
</html>