2016-07-24 6 views
1

dieser einfache Code erstellt eine Datei, wenn die Seite aktualisiert wird, aber es funktioniert nicht.file_put_contents funktioniert nicht auf Server

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

Von dem, was ich der Benutzer sehen kann alle Privilegien hat benötigt eine Datei

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

irgendwelche Ideen von zu schaffen, was könnte Erstellung der Datei werden zu verhindern?

+0

So PHP läuft unter 'admin1'? – Eun

+0

Wie wird der Fehler angezeigt? – Drakes

+0

@FirstOne alle php gehören dem Benutzer Admin1-rw-r - r--. 1 admin1 root 77 Jul 24 16:04 datei.html -rw-rw-r--. 1 admin1 Ian 241 21. Juli 16:37 form_email.php -rw-rw-r--. 1 admin1 Ian 725 23. Juli 18:31 forms_basics.php -rw-rw-r--. 1 admin1 Ian 215 21 Jul 22:11 form_script.php -rw-rw-r--. 1 admin1 Ian 245 21 Juli 21:55 helloworld2.php -rw-r - r--. 1 admin1 Ian 114 24. Juli 17:30 hallowelt.php -rw-r - r--. 1 admin1 root 18 Jul 20 13:07 include.php -rw-r - r--. 1 admin1 Ian 383 15. Juli 11:31 index.html [/ CODE] – Matrix1977

Antwort

0

Ihre html ist Symlink /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 

Sie brauchen nicht die Schreibberechtigung für diesen Symlink, aber für das Ziel der Symlink.

Auch ist es nicht über Sie die Berechtigungen haben, aber der Benutzer, der die apache Webserver ausgeführt wird (in der Regel www-data, apache auf Fedora) muss diese Berechtigungen.

auch alle Benutzer die Berechtigungen geben, um Ihre Web-Verzeichnis ist eine schlechte Idee zu schreiben, können so versuchen diese:

  1. ein Unterverzeichnis erstellen /var/www/html in data genannt:

    mkdir /var/www/html/data 
    
  2. Geben Sie ihm Schreibberechtigungen für den Benutzer apache:

    chown apache:root /var/www/html/data 
    chmod 700 /var/www/html/data 
    
  3. Ändern Sie bitte Ihre Skript in dieses Verzeichnis zu schreiben:

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

@jakue Ich bekomme Fehlermeldung chown: ungültiger Benutzer: 'www-data: root' Ich glaube, ich habe versehentlich den Benutzer www-Daten gelöscht. Ich kann diesen Benutzer in Katze/etc/passwd nicht finden :( – Matrix1977

+0

Wenn Sie Systembenutzer löschen, seien Sie nicht überrascht, dass Sachen nicht für Sie arbeiten. Das Beginnen mit einer sauberen Installation sollte Sie vermutlich vorwärts bewegen. – Jakuje

+0

Ich habe die Antwort so geändert, dass sie den Benutzer "apache" widerspiegelt. 'www-data' wird auf Debian verwendet. Mit 'apache' sollte der Benutzer den Job machen. – Jakuje

Verwandte Themen