2012-02-08 2 views
4

Possible Duplicate:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectОтказано в доступе при открытии или создания файлов с PHP

Я не могу создавать файлы с PHP, так как файл получил разрешение доцента для этого. я получаю эту ошибку:

Warning: fopen(test.txt): failed to open stream: Permission denied in /web/com/example.com/index.php on line 20
Warning: fwrite() expects parameter 1 to be resource, boolean given in /web/com/example.com/index.php on line 21
Warning: fclose() expects parameter 1 to be resource, boolean given in /web/com/example.com/index.php on line 22

Это код, который я использовал:

<?php 
$file = fopen("test.txt","w"); 
echo fwrite($file,"Hello World. Testing!"); 
fclose($file); 
?> 

Простой, как это! Это example code from w3schools.

Так что мне нужна помощь, чтобы узнать, как предоставить файлу необходимые разрешения. Я загружаю файлы на свой сайт с помощью FTP-приложения net2ftp, если это имеет значение.

+0

Прочитайте некоторый учебник, чтобы понять, с чем вы имеете дело, например. http://www.dartmouth.edu/~rc/help/faq/permissions.html - Я думаю, что это поможет вам больше всего. – hakre

+0

Это зависит от настройки сервера. Вам нужно будет выяснить, какой пользователь выполняет ваш PHP-процесс, и применять разрешения на чтение и запись для этого пользователя в каталоге. Существуют некоторые распространенные значения по умолчанию, поэтому, если вы можете публиковать то, что вы используете для размещения, Apache, IIS и т. Д., Это может помочь. – Chris

+0

См. Разрешения на сервере thru ssh (ls -l в каталоге) – CappY

ответ

3

Пользователь, на котором работает PHP (обычно пользователь Apache), не имеет права на запись в папку, в которой работает скрипт. Попробуйте использовать абсолютный путь, например, «/tmp/test.txt» - tmp обычно доступен для записи любым пользователем, но содержимое, как правило, уничтожается при перезагрузке.

13

Папка, которую ваш скрипт PHP пытается записать, вероятно, будет принадлежать пользователю root. Ваш PHP-скрипт более чем вероятно работает под пользователем www-data, если вы используете настройку Ubuntu/Apache/PHP по умолчанию.

Таким образом вам нужно:

chown -R www-data:www-data folder 
chmod -R g+w folder 

Если вы обнаружили PHP работает под пользователем, который отличается от WWW-данных, то просто изменить пользователю группу в первой строке кода.

PS. измените «папку» для вашего фактического имени папки.

+0

Где я могу напечатать? Когда я попытался отправить этот код на ftp-сервер, он ответил: 500 неизвестных команд –

+0

Он не знал, что такое команда «chown», но она действительно знала команду «chmod», НО! Когда я менял «папку» в любой файл или папку (например, «/index.php» или «/ test» (я тестировал с кавычками и косой чертой и без них)), он ответил на это: 550 Не удалось изменить perms на g + w/test: Нет такого файла или каталога –

+1

Предполагалось, что вы были в командной строке, а не с помощью FTP-клиента. Вам нужно быть в командной строке, чтобы запустить команду chown. Единственное, что я могу предложить в этом случае, если chmod для папки до 0777, но это не то, что я бы рекомендовал. –

Смежные вопросы