Я пытаюсь создать файл через fopen()
как fopen()
ниже:
<?php $handle = fopen('name.txt', 'w') or die('Can\'t create file'); fwrite($handle, 'Hamed'."\n"); fwrite($handle, 'Kamrava'."\n"); echo 'File was created successfully'; ?>
Но не создайте этот файл и не получите меня:
Can't create file
PS:
Я использую LAMP-сервер в Linux / Ubuntu.
Перед созданием этого файла я попытался выполнить команду ниже:
sudo chmod -R 755 ~/public_html/
Любые идеи были бы хорошы.
Сценарий PHP выполняется как пользователь, настроенный для веб-сервера Apache. Для создания файлов этот пользователь должен иметь разрешение на запись в каталог, в котором вы хотите создать файл. Есть два способа сделать это:
Вы можете предоставить разрешение на запись в каталог для всех пользователей, в которое будут включены все, что настроено для Apache (достаточно для машины разработки):
chmod o+w ~/public_html/directory_where_you_want_to_write
Или вы можете передать права собственности на каталог пользователю Apache. Это будет означать, что вы с обычной учетной записью пользователя не сможете создавать или удалять файлы в этом каталоге, хотя вы также не должны делать это. Предполагая, что Apache работает с учетной записью пользователя www-data
, как это делается по умолчанию на Ubuntu, вы бы сделали:
sudo chown www-data ~/public_html/directory_where_you_want_to_write
(И каталог не должен находиться под public_html
, я просто использую его в качестве примера, поскольку, похоже, это где ваши файлы.)
папка должна принадлежать пользователю apache, поэтому:
sudo chown -R www-data:www-data ~/public_html/
Измените разрешение папки (в которой вы пытаетесь создать) на все разрешения
sudo chmod 777