Я не вижу ничего плохого в вашем коде. Я думаю, у вас есть проблема с разрешением.
PHP работает как один из следующих двух пользователей:
nobody
или, возможно, www-data
(он же системный пользователь, используемый веб-сервером)
- Ваше имя пользователя
Чтобы PHP запускался как пользователь, владеющий веб-корнем (т. Е. Вы), suexec должен быть включен для PHP. Тот факт, что вы не можете записать в файл с разрешениями 0644
, говорит о том, что это не так.
У вас есть два варианта:
- Переконфигурируйте сервер, чтобы PHP работал как пользователь, владеющий веб-корнем
- Сделать мир файлов доступным для записи
Я настоятельно рекомендую первое, а не второе. Однако у вас не всегда есть такой выбор. Если ваш хост (или системный администратор, или кто-то еще) не может или не включит suexec для PHP, вам нужно предоставить файлу 0777
права доступа, или rwxrwxrwx
.
Возможно, вы захотите войти через ssh и сначала создать выходной файл, используя команду touch
(или каталог, если это то, что вам нужно через mkdir
), а затем предоставьте ему необходимые разрешения.