Ich erhalte diesen Fehler bei einem Avatar-Upload auf meiner Website. Ich habe es noch nie zuvor bekommen und in letzter Zeit wurde nichts geändert, damit ich diesen Fehler bekomme ...
Warning: is_writable() [function.is-writable]:
open_basedir restriction in effect.
File(/) is not within the allowed path(s):
php
filesystems
Webnet
quelle
quelle
Antworten:
Ändern Sie die
open_basedir
Einstellungen in Ihrer PHP-Konfiguration (siehe Laufzeitkonfiguration ).Die
open_basedir
Einstellung wird hauptsächlich verwendet, um zu verhindern, dass PHP-Skripte für einen bestimmten Benutzer auf Dateien im Konto eines anderen Benutzers zugreifen. Normalerweise sollten alle Dateien in Ihrem eigenen Konto von Ihren eigenen Skripten gelesen werden können.Beispieleinstellungen über,
.htaccess
wenn PHP als Apache-Modul auf einem Linux-System ausgeführt wird:quelle
/my/cutsom/dir/
. Ich weiß nicht warum.php_admin_value
in.htaccess
Dateien verwenden . Sie können DirectoryMatch nicht in .htaccess-Dateien verwenden . (Was für eine Sicherheitsmaßnahme wäreopen_basedir
, wenn sie nur deaktiviert werden könnte?)Ändern Sie die open_basedir-Einstellungen in Ihrem Hosting-Konto und setzen Sie sie auf none. Suchen Sie die Einstellung open_basedir im Bereich "PHP-Einstellungen" Ihres Plesk / cPanel. Setzen Sie es aus der dort angegebenen Dropdown-Liste auf "Keine". Ich habe sie im Plesk-Panel-Bild gezeigt.
quelle
Um diesen Fehler zu beheben, müssen Sie die Datei httpd.conf bearbeiten. Lange bevor es in phpinfo in der Apache2handler-Abschnittsanweisung Server Root zu sehen ist. Zum Beispiel in meinem Fall auf diese Weise - / etc / httpd / httpd.conf. Öffnen Sie die Datei httpd.conf und finden Sie die Erwähnung des Parameters open_basedir. Und setzen Sie es auf keine. ( php_admin_value open_basedir keine )
quelle
open_basedir
Konfiguration in meinem gefundenphp.ini
. (Arch Linux auf Raspberry Pi mit PHP 5)Wenn Sie dies mit ausführen
php file.php
. Sie müssen bearbeitenphp.ini
Suchen Sie diese Datei:Fügen Sie den Pfad der Datei zur
open_basedir
Eigenschaft hinzu:open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/run/media/andrew/ext4/protected
quelle
Für mich war das Problem schlecht / fehlende Konfigurationswerte für den Plesk-Server, auf dem das Ganze ausgeführt wird. Ich habe gerade die Anweisungen hier befolgt: http://davidseah.com/blog/2007/04/separate-php-error-logs-for-multiple-domains-with-plesk/
Sie können PHP so konfigurieren, dass für jede VirtualHost-Definition eine separate Fehlerprotokolldatei vorhanden ist. Der Trick besteht darin, genau zu wissen, wie es eingerichtet wird, da Sie die Konfiguration nicht direkt berühren können, ohne Plesk zu beschädigen. Jeder Domainname auf Ihrem (dv) hat ein eigenes Verzeichnis in / var / www / vhosts. Ein typisches Verzeichnis hat die folgenden Verzeichnisse der obersten Ebene:
Sie möchten eine vhost.conf-Datei im Ordner conf / des Domänenverzeichnisses mit den folgenden Zeilen erstellen:
Ändern Sie den ersten Wert entsprechend Ihrer tatsächlichen Installation (ich habe /tmp/phperrors.log verwendet). Nachdem Sie die Datei vhost.conf bearbeitet haben, testen Sie die Konfiguration über die Konsole mit:
Und schließlich sagen Sie Plesk, dass Sie diese Änderung vorgenommen haben.
quelle
Der Pfad, auf den Sie verweisen, ist inkorrekt und nicht mit dem VerzeichnisRoot Ihres Arbeitsbereichs verknüpft. Versuchen Sie, einen absoluten Pfad für die Datei zu erstellen, auf die Sie zugreifen möchten, wobei Sie jetzt wahrscheinlich einen relativen Pfad verwenden ...
quelle
Wenn Sie ein solches Problem mit ispconfig3 haben und einen solchen Fehler erhalten haben
Um dies zu lösen (in meinem Fall), setzen Sie PHP einfach auf der Website von ispconfig3 auf SuPHP
Hoffe es hilft jemandem :)
quelle
Ich hatte dieses Problem auf einer meiner WordPress-Sites nach dem Aktualisieren und / oder Verschieben :)
Checken Sie in der Datenbanktabelle 'wp_options' den 'upload_path' ein und bearbeiten Sie ihn ordnungsgemäß ...
quelle
Wenn Sie einen PHP-IIS-Stack ausführen und diesen Fehler haben, handelt es sich normalerweise um eine schnelle Korrektur der Berechtigungen.
Wenn Sie den Windows-Server selbst verwalten und Zugriff haben, versuchen Sie Folgendes:
Navigieren Sie zu dem Ordner, in den Sie beim Schreiben trauern, und klicken Sie mit der rechten Maustaste darauf> Eigenschaften öffnen> Sicherheit.
Sehen Sie, welche Benutzer Zugriff auf den Ordner haben, welche schreibgeschützt und welche voll sind. Haben Sie eine Gruppe, die das Schreiben blockiert?
Das Update ist spezifisch für Ihr IIS-Setup. Verwenden Sie die anonyme Authentifizierung mit einem bestimmten Benutzer-IUSR oder mit der Identität des Anwendungspools?
In jedem Fall werden Sie am Ende eine neue vollständige Schreibberechtigung für eine der IUSR-, IIS_IUSRS- oder Ihre Anwendungspoolidentität hinzufügen. Wie ich bereits sagte, hängt dies von Ihrem Setup ab und davon, wie Sie es tun möchten. Sie können das Google-Kaninchenloch in diesem Fall durchgehen (ein solcher Beitrag - IIS_IUSRS- und IUSR-Berechtigungen in IIS8 ). Für mich verwende ich anon mit meiner App-Pool-Identität, damit ich
MACHINE_NAME\IIS_IUSRS
bei jedem temporären oder Upload mit vollständigem Lesen / Schreiben davonkommen kann Ordner.Ich muss nichts extra zu meiner
open_basedir =
in der php.ini hinzufügen.quelle
Wenn Sie DirectAdmin verwenden , führen Sie zusätzlich zur Antwort von @ yogihosting die folgenden Schritte aus:
admin
standardmäßig.Geben Sie die Konfigurationen, die Sie ändern möchten, in den Textbereich oben auf der Seite ein. Sie sollten die vorhandene Konfigurationsdatei berücksichtigen und die darauf basierenden Werte ändern. Wenn Sie beispielsweise sehen, dass dies
open_basedir
in a festgelegt ist<Directory>
, sollten Sie Ihre Änderung möglicherweise im zugehörigen<Directory>
Tag umgeben:Nachdem Sie die erforderlichen Änderungen vorgenommen haben, klicken Sie auf die Schaltfläche "Speichern".
Es gibt jedoch eine andere Möglichkeit, die Konfigurationsdatei zu bearbeiten:
Achtung : Seien Sie vorsichtig und führen Sie die folgenden Schritte auf eigenes Risiko aus, da sonst Fehler auftreten oder Ausfallzeiten auftreten können. Der empfohlene Weg ist der vorherige, da er verhindert, dass Sie die Konfigurationsdatei falsch ändern und Ihnen den Fehler anzeigen.
/usr/local/directadmin/data/users
. Wechseln Sie von den aufgelisteten Benutzern zu einer, die sich auf die Domain bezieht, die Sie ändern möchten.Hier gibt es eine
httpd.conf
Datei. Erstellen Sie ein Backup daraus:Bearbeiten Sie nun die Konfigurationsdatei mit dem Editor Ihrer Wahl. Zum Beispiel bearbeiten bestehende
open_basedir
zunone
. Versuchen Sie nicht, Dinge zu entfernen, da sonst Ausfallzeiten auftreten können. Speichern Sie die Datei nach der Bearbeitung.Starten Sie den Apache-Webserver auf eine der folgenden Arten neu (
sudo
bei Bedarf verwenden):Wenn bei Ihnen Fehler auftreten, ersetzen Sie die Hauptkonfigurationsdatei durch die gesicherte Datei und starten Sie den Webserver neu.
Auch hier ist die erste Lösung die bevorzugte, und Sie sollten die zweite Methode nicht beim ersten Mal ausprobieren. Wie in der Warnung erwähnt, besteht der Vorteil des ersten Weges darin, dass das Speichern Ihrer schlecht konfigurierten Inhalte verhindert wird.
Ich hoffe es hilft!
quelle
Ich verwende eine Apache vhost- Datei, um PHP mit anwendungsspezifischen INI-Optionen auf meinem Windows-Server auszuführen. Deshalb benutze ich die Option -d des Befehls php.
Ich setze das open_basedir für jede Anwendung als eine dieser Optionen.
Ich musste mehrere URLs als open_basedir festlegen, einschließlich eines UNC-Pfads , und die Syntax für diesen Fall war etwas schwer zu finden. Sie müssen die Pfade mit Semikolons trennen. Wenn Ihr erster Pfad mit einem Driveletter beginnt, müssen Sie die Liste möglicherweise auch mit einem Semikolon beginnen. Zumindest funktioniert das bei mir.
Beispiel:
quelle
Bei Verwendung von ispconfig3:
quelle
Einfach suchen
in php.ini und deaktiviere es. Das ist die einfachste Lösung, um dieses Problem zu lösen.
Vor Änderungen
open_basedir =
Nach Änderungen
;open_basedir =
Ps - Vergessen Sie nach Änderungen nicht, Ihren Server neu zu starten.
Genießen ;)
quelle