2016-07-24 6 views
1

этот простой код создает файл, когда страница обновляется, но она не работает.file_put_contents не работает на сервере

<?php 
    $fileName="test1.html"; 
    $content="<h1>header</h1>"; 
    file_put_contents($fileName,$content); 
?> 

Из того, что я могу видеть, пользователь имеет все привилегии, необходимые для создания файла

lrwxrwxrwx. 1 admin1 root   13 Jul 10 22:35 html -> /var/www/html 

любые идеи, что может быть предотвращение создания файла?

+0

Итак, PHP работает под 'admin1'? – Eun

+0

Какая ошибка отображается? – Drakes

+0

@FirstOne все php принадлежат пользователю Admin1-rw-r - r--. 1 admin1 root 77 Jul 24 16:04 file.html -rw-rw-r--. 1 admin1 Ian 241 Jul 21 16:37 form_email.php -rw-rw-r--. 1 admin1 Ian 725 Jul 23 18:31 forms_basics.php -rw-rw-r--. 1 admin1 Ian 215 Jul 21 22:11 form_script.php -rw-rw-r--. 1 admin1 Ian 245 21.07 21:55 helloworld2.php -rw-r - r--. 1 admin1 Ian 114 Jul 24 17:30 helloworld.php -rw-r - r--. 1 admin1 root 18 июля 20 13:07 include.php -rw-r - r--. 1 admin1 Ian 383 Jul 15 11:31 index.html [/ CODE] – Matrix1977

ответ

0

Ваш html является символической ссылкой на /var/www/html:

ls -ldZ /var/www/html 
drwxr-xr-x. 2 admin1 brahim system_u:object_r:httpd_sys_content_t:s0 274 Jul 24 17:36 /var/www/html 

Вам не нужно разрешение на запись для этой линке, а для мишени линке.

Также речь идет не о вы имея разрешения, но пользователь, который работает на apache веб-сервер (обычно www-data, apache на Fedora) нужны эти разрешения.

также предоставление всем пользователям права доступа для записи вашего веб-каталога является плохая идея, так что давайте попробуем это один:

  1. Создать подкаталог в /var/www/html под названием data:

    mkdir /var/www/html/data 
    
  2. Дайте ему права на запись для пользователя apache:

    chown apache:root /var/www/html/data 
    chmod 700 /var/www/html/data 
    
  3. Изменить скрипт для записи в этот каталог:

    $fileName="data/test1.html"; 
    
+0

@jakue Я получаю сообщение об ошибке chown: недействительный пользователь: 'www-data: root' Я думаю, что я, возможно, удалил пользовательские данные www по ошибке. Я не могу найти этого пользователя в cat/etc/passwd :( – Matrix1977

+0

Если вы удаляете пользователей системы, не удивляйтесь, что для вас не работают вещи. Начиная с чистой установки, возможно, вы переместите вас вперед. – Jakuje

+0

Я изменил ответ, чтобы отразить пользователя 'apache'. В Debian используется 'www-data'. Использование пользователя 'apache' должно выполнять эту работу. – Jakuje

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