You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Mint下Apache服务器中PHP fopen()函数写入文件失败求助

解决Apache下PHP fopen()权限拒绝问题

你的问题根源是Apache运行用户的权限不足,和PHP配置无关。

问题原因

Apache在Linux系统中默认以www-data用户身份运行,你通过sudo chown $USER:$USER -R /var/www/site02把目录所有者改成了自己的用户,这导致www-data用户没有该目录的写入权限——PHP作为Apache的子进程,执行fopen()时用的是www-data的权限,自然会触发权限拒绝错误。

你的本地用户能读写文件、执行Git命令,是因为操作时用的是你自己的用户权限,和Apache的运行用户权限不共享。

解决方法

方法一:调整目录的组权限(推荐,更安全)

  1. 将目录的所属组改为www-data:
sudo chown $USER:www-data -R /var/www/site02
  1. 赋予组用户写入权限:
sudo chmod g+w -R /var/www/site02

方法二:将Apache用户加入你的用户组

  1. 把www-data添加到你的用户组:
sudo usermod -aG $USER www-data
  1. 重启Apache使配置生效:
sudo systemctl restart apache2

附你的代码及错误信息

代码:

<?php
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    include_once "c&f.php";

    fopen("test.txt", 'w');

错误提示:

Warning: fopen(test.txt): Failed to open stream: Permission denied in /var/www/site02/index.php on line 6

内容的提问来源于stack exchange,提问作者bounty_python

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:42:08