PHP 运行 来自 Apache 无法写入文件系统
PHP running from Apache cannot write to filesystem
当从 Apache 网络服务器 运行 连接时,我无法 PHP 将文件写入文件系统。
我有一个简单的 PHP 脚本:
<?php
print 'User : '.posix_getpwuid(posix_getuid())['name'];
print ' ';
print 'Group: '.posix_getgrgid(posix_getgid())['name'];
file_put_contents('./test.txt', 'OK');
?>
我以用户 ec2-user:ec2-user
登录,只是为了测试 Apache 运行ning 为 ec2-user:ec2-user
。
ec2-user
属于以下组:
>groups
ec2-user adm wheel systemd-journal www
该脚本位于 Apache 文档根目录中。
/var/www/html/test.php
drwxr-xr-x. 21 root root 4096 ene 31 05:45 var
drwxrwsr-x. 4 root www 31 ene 29 17:30 www
drwxrwsr-x. 2 root www 36 ene 31 06:16 html
-rw-rw-r--. 1 ec2-user www 172 ene 31 06:15 test.php
如果 运行 脚本 vis PHP cli 创建文件 test.txt
并生成以下输出。
>php ./test.php
User : ec2-user Group: ec2-user
但是如果我通过浏览器将脚本作为普通网页或通过 curl 调用脚本,我会收到文件权限错误:
> curl http://my.ip/test.php
User : ec2-user Group: ec2-user<br />
<b>Warning</b>: file_put_contents(./test.txt): failed to open stream: Permission denied in <b>/var/www/html/test.php</b> on line <b>5</b><br />
我也试过 运行 Apache 为 ec2-user:www
,但输出是一样的:
User : ec2-user Group: www
Warning: file_put_contents(./test.txt): failed to open stream: Permission denied in /var/www/html/test.php on line 6
我检查了 PHP 配置,没有配置 open_basedir
选项。
我已尝试写入具有 777
权限和相同输出的 /dummy
文件夹。
是否缺少任何配置?
检查 selinux 是否启用
selinuxenabled && echo enabled || echo disabled
如果启用,请尝试禁用
echo 0 > /selinux/enforce
当从 Apache 网络服务器 运行 连接时,我无法 PHP 将文件写入文件系统。
我有一个简单的 PHP 脚本:
<?php
print 'User : '.posix_getpwuid(posix_getuid())['name'];
print ' ';
print 'Group: '.posix_getgrgid(posix_getgid())['name'];
file_put_contents('./test.txt', 'OK');
?>
我以用户 ec2-user:ec2-user
登录,只是为了测试 Apache 运行ning 为 ec2-user:ec2-user
。
ec2-user
属于以下组:
>groups
ec2-user adm wheel systemd-journal www
该脚本位于 Apache 文档根目录中。
/var/www/html/test.php
drwxr-xr-x. 21 root root 4096 ene 31 05:45 var
drwxrwsr-x. 4 root www 31 ene 29 17:30 www
drwxrwsr-x. 2 root www 36 ene 31 06:16 html
-rw-rw-r--. 1 ec2-user www 172 ene 31 06:15 test.php
如果 运行 脚本 vis PHP cli 创建文件 test.txt
并生成以下输出。
>php ./test.php
User : ec2-user Group: ec2-user
但是如果我通过浏览器将脚本作为普通网页或通过 curl 调用脚本,我会收到文件权限错误:
> curl http://my.ip/test.php
User : ec2-user Group: ec2-user<br />
<b>Warning</b>: file_put_contents(./test.txt): failed to open stream: Permission denied in <b>/var/www/html/test.php</b> on line <b>5</b><br />
我也试过 运行 Apache 为 ec2-user:www
,但输出是一样的:
User : ec2-user Group: www
Warning: file_put_contents(./test.txt): failed to open stream: Permission denied in /var/www/html/test.php on line 6
我检查了 PHP 配置,没有配置 open_basedir
选项。
我已尝试写入具有 777
权限和相同输出的 /dummy
文件夹。
是否缺少任何配置?
检查 selinux 是否启用
selinuxenabled && echo enabled || echo disabled
如果启用,请尝试禁用
echo 0 > /selinux/enforce