Otrzymuję ten błąd podczas przesyłania awatara na moją stronę. Nigdy wcześniej go nie rozumiałem i ostatnio nic się nie zmieniło, abym zaczął otrzymywać ten błąd ...
Warning: is_writable() [function.is-writable]:
open_basedir restriction in effect.
File(/) is not within the allowed path(s):
php
filesystems
Sieć internetowa
źródło
źródło
Odpowiedzi:
Zmodyfikuj
open_basedir
ustawienia w konfiguracji PHP (patrz Konfiguracja środowiska wykonawczego ).To
open_basedir
ustawienie służy przede wszystkim do uniemożliwienia skryptom PHP określonego użytkownika dostępu do plików na koncie innego użytkownika. Dlatego zazwyczaj wszystkie pliki na Twoim koncie powinny być odczytywane przez własne skrypty.Przykładowe ustawienia za pośrednictwem,
.htaccess
jeśli PHP działa jako moduł Apache w systemie Linux:<DirectoryMatch "/home/sites/site81/"> php_admin_value open_basedir "/home/sites/site81/:/tmp/:/" </DirectoryMatch>
źródło
/my/cutsom/dir/
. Nie wiem, dlaczego myślałem.php_admin_value
w.htaccess
plikach . Nie można używać DirectoryMatch w plikach .htaccess . (Jaki byłby rodzaj zabezpieczenia, gdybyopen_basedir
można go było wyłączyć?)Zmodyfikuj ustawienia open_basedir na swoim koncie hostingowym i ustaw je na żadne. Znajdź ustawienie open_basedir podane w obszarze „Ustawienia PHP” w Plesk / cPanel. Ustaw go na „brak” z podanego tam menu. Pokazałem je na zdjęciu panelu Plesk.
źródło
Aby rozwiązać ten błąd, musisz edytować plik httpd.conf. Na długo wcześniej można było to zobaczyć w phpinfo w sekcji dyrektywy apache2handler. Server Root. Na przykład w moim przypadku w ten sposób - / etc / httpd / httpd.conf. Otwórz plik httpd.conf, znajdź wzmiankę o parametrze open_basedir. I ustaw go na zero. ( php_admin_value open_basedir none )
źródło
open_basedir
konfigurację w moimphp.ini
. (Arch Linux na Raspberry Pi z php 5)Jeśli prowadzisz to z
php file.php
. Musisz edytowaćphp.ini
Znajdź ten plik:I dołącz ścieżkę do pliku do
open_basedir
właściwości:open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/run/media/andrew/ext4/protected
źródło
Dla mnie problemem były złe / brakujące wartości konfiguracyjne dla serwera Plesk, na którym działa całość. Po prostu postępowałem zgodnie ze wskazówkami tutaj: http://davidseah.com/blog/2007/04/separate-php-error-logs-for-multiple-domains-with-plesk/
Możesz skonfigurować PHP tak, aby miał oddzielny plik dziennika błędów dla każdej definicji VirtualHost. Sztuczka polega na tym, aby dokładnie wiedzieć, jak to ustawić, ponieważ nie można bezpośrednio dotknąć konfiguracji bez zerwania Pleska. Każda nazwa domeny na twoim (dv) ma swój własny katalog w / var / www / vhosts. Typowy katalog zawiera następujące katalogi najwyższego poziomu:
cgi-bin/ conf/ error_docs/ httpdocs/ httpsdocs/ ...and so on
Będziesz chciał utworzyć plik vhost.conf w folderze conf / katalogu domeny z następującymi wierszami:
php_value error_log /path/to/error_log php_flag display_errors off php_value error_reporting 6143 php_flag log_errors on
Zmień pierwszą wartość, aby była zgodna z rzeczywistą instalacją (użyłem /tmp/phperrors.log). Po zakończeniu edycji pliku vhost.conf przetestuj konfigurację z konsoli za pomocą:
apachectl configtest …or if you don’t have apachectl (as Plesk 8.6 doesn’t seem to)… /etc/init.d/httpd configtest
I wreszcie powiedz Pleskowi, że dokonałeś tej zmiany.
źródło
Ścieżka, do której się odnosisz, jest niepoprawna i nie dotyczy katalogu głównego twojego obszaru roboczego. Spróbuj zbudować bezwzględną ścieżkę do pliku, do którego chcesz uzyskać dostęp, gdzie prawdopodobnie używasz teraz ścieżki względnej ...
źródło
jeśli masz tego rodzaju problem z ispconfig3 i otrzymałeś taki błąd
Aby go rozwiązać (w moim przypadku), po prostu ustaw PHP na SuPHP w panelu strony internetowej ispconfig3
Mam nadzieję, że to komuś pomoże :)
źródło
Miałem ten problem na jednej z moich stron wordpress po aktualizacji i / lub przeprowadzce :)
Sprawdź w tabeli bazy danych „wp_options” „upload_path” i odpowiednio ją edytuj ...
źródło
Jeśli jest używany ispconfig3:
źródło
Jeśli używasz stosu PHP IIS i masz ten błąd, zwykle jest to szybka poprawka uprawnień.
Jeśli sam administrujesz serwerem Windows i masz do niego dostęp, spróbuj NAJPIERW:
Przejdź do folderu, który sprawia ci kłopot podczas pisania, i kliknij go prawym przyciskiem myszy> otwórz właściwości> zabezpieczenia.
Zobacz, którzy użytkownicy mają dostęp do folderu, którzy mają tylko do odczytu, a którzy są pełne. Czy masz grupę, która blokuje pisanie?
Poprawka będzie specyficzna dla Twojej konfiguracji usług IIS. Czy używasz uwierzytelniania anonimowego z IUSR określonego użytkownika, czy z tożsamością puli aplikacji?
W każdym razie w końcu dodasz nowe pełne uprawnienia do zapisu dla jednego z IUSR, IIS_IUSRS lub tożsamości puli aplikacji - tak jak powiedziałem, będzie się to różnić w zależności od konfiguracji i sposobu, w jaki chcesz to zrobić, możesz przejść do króliczej dziury google na tym jednym (jeden taki post - uprawnienia IIS_IUSRS i IUSR w IIS8 ) Dla mnie używam anon z moją tożsamością puli aplikacji, więc mogę uciec
MACHINE_NAME\IIS_IUSRS
z pełnym odczytem / zapisem w dowolnym temp. lub przesyłaniu lornetka składana.Nie muszę dodawać nic więcej do mojego
open_basedir =
w php.ini.źródło
Oprócz odpowiedzi @ yogihosting , jeśli używasz DirectAdmin , wykonaj następujące kroki:
admin
domyślna.Wprowadź konfiguracje, które chcesz zmienić, w obszarze tekstowym u góry strony. Należy wziąć pod uwagę istniejący plik konfiguracyjny i na jego podstawie zmodyfikować wartości. Na przykład, jeśli widzisz, że
open_basedir
jest ustawiony wewnątrz a<Directory>
, być może powinieneś otoczyć swoją zmianę powiązanym<Directory>
znacznikiem:<Directory "/path/to/directory"> php_admin_value open_basedir none </Directory>
Po wprowadzeniu niezbędnych zmian kliknij przycisk „Zapisz”.
Istnieje jednak inny sposób edycji pliku konfiguracyjnego:
Przestroga : zachowaj ostrożność i wykonaj poniższe czynności na własne ryzyko, ponieważ możesz napotkać błędy lub doprowadzić do przestoju. Zalecany sposób jest poprzedni, ponieważ zapobiega niepoprawnej modyfikacji pliku konfiguracyjnego i wyświetla błąd.
/usr/local/directadmin/data/users
. Spośród wymienionych użytkowników przejdź do jednego związanego z domeną, którą chcesz zmienić.Tutaj jest
httpd.conf
plik. Zrób z tego kopię zapasową:Teraz edytuj plik konfiguracyjny za pomocą wybranego edytora. Na przykład, edytować istniejące
open_basedir
donone
. Nie próbuj usuwać rzeczy, w przeciwnym razie możesz doświadczyć przestoju. Zapisz plik po edycji.Zrestartuj serwer WWW Apache, używając jednego z następujących sposobów (użyj w
sudo
razie potrzeby):Jeśli napotkasz jakiekolwiek błędy, zastąp główny plik konfiguracyjny plikiem z kopii zapasowej i zrestartuj serwer WWW.
Ponownie, pierwsze rozwiązanie jest preferowane i nie powinieneś próbować drugiej metody za pierwszym razem. Jak zauważono w przestrodze, zaletą pierwszego sposobu jest to, że zapobiega on zapisywaniu źle skonfigurowanych rzeczy.
Mam nadzieję, że to pomoże!
źródło
Używam Apache vhost -File do uruchamiania PHP z opcjami ini specyficznymi dla aplikacji na moim serwerze Windows. Dlatego używam -d opcji polecenia php.
Ja ustawienie open_basedir dla każdego zastosowania jako jednej z tych opcji.
Musiałem ustawić wiele adresów URL jako open_basedir, w tym ścieżkę UNC , a składnia dla tego przypadku była nieco trudna do znalezienia. Musisz oddzielić ścieżki średnikami, a jeśli pierwsza ścieżka zaczyna się od literki sterującej, może być konieczne rozpoczęcie listy również średnikiem. Przynajmniej to działa dla mnie.
Przykład:
php.exe -d open_basedir=;d:/www/applicationRoot;//internal.unc.path/ressource/
źródło
Po prostu wyszukaj
w php.ini i wyłącz go. To najprostsze rozwiązanie tego problemu.
Przed zmianami
open_basedir =
Po zmianach
;open_basedir =
Ps - Po zmianach nie zapomnij zrestartować serwera.
Cieszyć się ;)
źródło