Я предполагаю, что Apache работает как пользователь / группа, отличная от пользователя / группы, владеющей файлом. В этом случае сам файл должен быть 0777
.
public
должно быть 0777
, только если вы планируете добавлять файлы в папку с помощью PHP. Даже если сама папка не является 0777
, если файл и папка имеет для пользователя как минимум 5
(read/execute
), вы сможете писать в файл.
В конце концов, ваше дерево файлов должно выглядеть так:
public_html
public
file.txt 0777
Естественно, вы не сможете изменить эти разрешения с помощью PHP, но вы можете сделать это с помощью вашего FTP-клиента.
Если он все еще не работает, возможно, PHP работает в безопасном режиме или вы используете расширение, такое как PHP Suhosin. Возможно, вы получите лучший результат, изменив владельца файла на того же пользователя / группу, в которой выполняется сценарий.
Чтобы получить идентификатор пользователя / группы исполняющего пользователя, вы можете использовать следующее:
<?php
echo getmyuid().':'.getmygid(); //ex:. 0:0
?>
Затем вы можете использовать chown
(в терминале), чтобы изменить владельца файла:
> chown 0:0 file.txt