it-swarm.com.de

pHP-Funktion file_put_contents funktioniert nicht

Warum würde file_put_contents es ablehnen, für den folgenden Code zu arbeiten?

$f = file_put_contents("files/r.js", "Some text here");

if ($f) print 1;
else print 0;
27
steve

Es könnte ein Erlaubnisproblem sein

Ist das Verzeichnis /files in 777 geändert? Manchmal erlaubt PHP keinen Zugriff auf Verzeichnisse, wenn diese nicht über die erforderlichen Berechtigungen verfügen. Ich weiß jedoch nichts über leere Fehler.

Versuchen Sie zu prüfen, ob es genügend Berechtigungen hat. Wenn nicht, setzen Sie es auf 777 und versuchen Sie es.

39
Famver Tags

Verwenden Sie den vollständigen Pfad im Dateisystem oder versuchen Sie, den URI zu verwenden? Ich denke, diese PHP -Funktion erwartet, dass Sie den Pfad angeben, wenn die Datei im Dateisystem gefunden wird.

Relative Pfade sollten aber in Ordnung sein. 

Sie müssen möglicherweise sicherstellen, dass die Datei vorhanden ist und die Berechtigungen auf 777 festgelegt sind. Manchmal habe ich festgestellt, dass es nicht ausreicht, nur die Verzeichnisberechtigungen auf 777 festzulegen, aber die Datei muss auch bereits vorhanden sein.

3
jmort253

Wir haben dies erlebt, da eine Problemumgehung erforderlich war (unabhängig von der Methode, den Berechtigungen und allen anderen hier genannten Faktoren). Wenn alle anderen Fixes fehlgeschlagen sind, haben wir festgestellt, dass sie mit von SELinux erstellten Einschränkungen verknüpft werden können.

1
designgroop

Wenn Sie Windows verwenden, hat die folgende Lösung unter Windows 10 mit PHP 5.5.38 perfekt funktioniert

Wenn Sie dieses Problem unter Windows/IIS haben, versuchen Sie Folgendes:

  1. Wechseln Sie zu dem Ordner, in den Sie schreiben möchten, klicken Sie mit der rechten Maustaste darauf, und wählen Sie dann Eigenschaften aus. 
  2. Wählen Sie die Registerkarte "Sicherheit" 
  3. Klicken Sie auf Bearbeiten 
  4. Klicken Sie auf Hinzufügen 
  5. Klicken Sie auf Erweitert 
  6. Klicken Sie auf Jetzt suchen 
  7. Wählen Sie in der Benutzerliste IUSR aus und klicken Sie auf OK 
  8. Klicken Sie erneut auf OK. 
  9. Die IUSR wird im oberen Feld mit der Bezeichnung "Gruppe von Benutzernamen" angezeigt. 
  10. Wählen Sie IUSR aus und erteilen Sie die erforderlichen Berechtigungen in der Listenansicht "Berechtigungen für BATCH". 
  11. Klicken Sie auf Übernehmen und dann sind Sie fertig. 

Die Schritte können für verschiedene Versionen von Fenstern geringfügig abweichen. Dies gilt auch für ASP.NET, obwohl ich denke, dass die Benutzer, die Sie hinzufügen, sowohl die Netzwerkbenutzer (Benutzer von NETWORK AND OR NETWORK SERVICE) als auch die IUSR sind.

0
user2288580