Saya mendapatkan kesalahan ini pada unggahan avatar di situs saya. Saya belum pernah mendapatkannya sebelumnya dan tidak ada yang berubah baru-baru ini bagi saya untuk mulai mendapatkan kesalahan ini ...
Warning: is_writable() [function.is-writable]:
open_basedir restriction in effect.
File(/) is not within the allowed path(s):
php
filesystems
Webnet
sumber
sumber
Jawaban:
Ubah
open_basedir
pengaturan dalam konfigurasi PHP Anda (Lihat Konfigurasi Runtime ).The
open_basedir
Pengaturan terutama digunakan untuk mencegah script PHP untuk pengguna tertentu dari mengakses file di akun pengguna lain. Jadi biasanya, file apa pun di akun Anda harus dapat dibaca oleh skrip Anda sendiri.Contoh pengaturan melalui
.htaccess
jika PHP dijalankan sebagai modul Apache di sistem Linux:<DirectoryMatch "/home/sites/site81/"> php_admin_value open_basedir "/home/sites/site81/:/tmp/:/" </DirectoryMatch>
sumber
/my/cutsom/dir/
. Tidak yakin mengapa berpikir.php_admin_value
dalam.htaccess
file . Anda tidak dapat menggunakan DirectoryMatch di file .htaccess . (Tindakan keamanan apa yang akanopen_basedir
dilakukan jika itu bisa dinonaktifkan begitu saja?)Ubah pengaturan open_basedir di akun hosting Anda dan atur ke tidak ada. Temukan pengaturan open_basedir yang diberikan di bawah area 'Pengaturan PHP' di Plesk / cPanel Anda. Setel ke 'tidak ada' dari tarik-turun yang diberikan di sana. Saya telah menunjukkannya di gambar panel Plesk.
sumber
Untuk mengatasi kesalahan ini, Anda harus mengedit file httpd.conf. Cara sebelumnya bisa dilihat di phpinfo di apache2handler direktif bagian Server Root. Misalnya, dalam kasus saya seperti ini - / etc / httpd / httpd.conf. Buka file httpd.conf, cari penyebutan parameter open_basedir. Dan atur ke tidak ada. ( php_admin_value open_basedir none )
sumber
open_basedir
konfigurasi di filephp.ini
. (Arch Linux di Raspberry Pi dengan php 5)Jika Anda menjalankan ini dengan
php file.php
. Anda perlu mengeditphp.ini
Temukan file ini:Dan tambahkan jalur file ke
open_basedir
properti:open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/run/media/andrew/ext4/protected
sumber
Bagi saya masalahnya adalah nilai konfigurasi yang buruk / hilang untuk server Plesk yang menjalankan semuanya. Saya hanya mengikuti petunjuk di sini: http://davidseah.com/blog/2007/04/separate-php-error-logs-for-multiple-domains-with-plesk/
Anda dapat mengkonfigurasi PHP agar memiliki file log kesalahan terpisah untuk setiap definisi VirtualHost. Triknya adalah mengetahui dengan tepat cara mengaturnya, karena Anda tidak dapat menyentuh konfigurasi secara langsung tanpa merusak Plesk. Setiap nama domain di (dv) Anda memiliki direktori sendiri di / var / www / vhosts. Direktori tipikal memiliki direktori tingkat atas berikut:
cgi-bin/ conf/ error_docs/ httpdocs/ httpsdocs/ ...and so on
Anda akan ingin membuat file vhost.conf di folder conf / direktori domain dengan baris berikut:
php_value error_log /path/to/error_log php_flag display_errors off php_value error_reporting 6143 php_flag log_errors on
Ubah nilai pertama agar sesuai dengan instalasi Anda yang sebenarnya (saya menggunakan /tmp/phperrors.log). Setelah Anda selesai mengedit file vhost.conf, uji konfigurasi dari konsol dengan:
apachectl configtest …or if you don’t have apachectl (as Plesk 8.6 doesn’t seem to)… /etc/init.d/httpd configtest
Dan terakhir beri tahu Plesk bahwa Anda telah membuat perubahan ini.
sumber
Path yang Anda maksud adalah tidak terhubung, dan tidak menggunakan directoryRoot dari ruang kerja Anda. Coba buat jalur absolut dari file yang ingin Anda akses, di mana Anda sekarang mungkin menggunakan jalur relatif ...
sumber
jika Anda memiliki masalah seperti ini dengan ispconfig3 dan mendapat kesalahan seperti ini
Untuk mengatasinya (dalam kasus saya), cukup setel PHP ke SuPHP di panel situs web ispconfig3
Semoga bisa membantu seseorang :)
sumber
Saya mengalami masalah ini @ salah satu situs wordpress saya setelah memperbarui dan / atau memindahkan :)
Periksa di tabel database 'wp_options' the 'upload_path' dan edit dengan benar ...
sumber
Jika digunakan ispconfig3:
sumber
Jika Anda menjalankan tumpukan PHP IIS dan mengalami kesalahan ini, biasanya ini adalah perbaikan izin yang cepat.
Jika Anda mengelola server windows sendiri dan memiliki akses, coba ini PERTAMA:
Arahkan ke folder yang memberi Anda kesedihan saat menulis dan klik kanan> buka properti> keamanan.
Lihat pengguna mana yang memiliki akses ke folder tersebut, mana yang hanya bisa dibaca dan mana yang sudah penuh. Apakah Anda memiliki grup yang memblokir penulisan?
Perbaikan akan khusus untuk pengaturan IIS Anda, apakah Anda menggunakan Otentikasi Anonim dengan pengguna tertentu IUSR atau dengan identitas Pool Aplikasi?
Bagaimanapun, Anda pada akhirnya akan menambahkan izin tulis penuh baru untuk salah satu IUSR, IIS_IUSRS, atau identitas kumpulan aplikasi Anda - seperti yang saya katakan, ini akan bervariasi tergantung pada pengaturan Anda dan bagaimana Anda ingin melakukannya, Anda dapat pergi ke lubang kelinci google yang satu ini (satu posting seperti itu - izin IIS_IUSRS dan IUSR di IIS8 ) Bagi saya, saya menggunakan langsung dengan identitas kumpulan aplikasi saya sehingga saya dapat lolos dengan
MACHINE_NAME\IIS_IUSRS
baca / tulis penuh pada temp atau unggah apa pun folder.Saya tidak perlu menambahkan apapun ke
open_basedir =
dalam php.ini saya.sumber
Selain jawaban @ yogihosting , jika Anda menggunakan DirectAdmin , ikuti langkah-langkah berikut:
admin
default.Masukkan konfigurasi yang ingin Anda ubah di textarea di bagian atas halaman. Anda harus mempertimbangkan file konfigurasi yang ada dan mengubah nilai berdasarkan itu. Misalnya, jika Anda melihat yang
open_basedir
disetel di dalam a<Directory>
, mungkin Anda harus mengapit perubahan Anda di<Directory>
tag terkait :<Directory "/path/to/directory"> php_admin_value open_basedir none </Directory>
Setelah melakukan perubahan yang diperlukan, klik tombol "Simpan".
Ada cara lain untuk mengedit file konfigurasi:
Perhatian : Berhati-hatilah, dan gunakan langkah-langkah berikut dengan risiko Anda sendiri, karena Anda dapat mengalami kesalahan, atau dapat menyebabkan downtime. Cara yang disarankan adalah yang sebelumnya, karena ini mencegah Anda memodifikasi file konfigurasi secara tidak benar dan menunjukkan kesalahan kepada Anda.
/usr/local/directadmin/data/users
. Dari pengguna yang terdaftar, buka salah satu yang terkait dengan domain yang ingin Anda ubah.Di sini, ada
httpd.conf
file. Buat cadangan darinya:Sekarang edit file konfigurasi dengan editor pilihan Anda. Misalnya, edit yang ada
open_basedir
kenone
. Jangan mencoba untuk menghapus sesuatu, atau Anda mungkin mengalami downtime. Simpan file setelah mengedit.Mulai ulang server web Apache menggunakan salah satu cara berikut (gunakan
sudo
jika perlu):Jika Anda mengalami kesalahan, ganti file konfigurasi utama dengan file cadangan, dan mulai ulang server web.
Sekali lagi, solusi pertama adalah yang lebih disukai, dan Anda tidak boleh mencoba metode kedua pada saat pertama. Seperti yang dicatat dalam peringatan, keuntungan dari cara pertama adalah mencegah penyimpanan barang Anda yang dikonfigurasi dengan buruk.
Semoga membantu!
sumber
Saya menggunakan Apache vhost -File untuk menjalankan PHP dengan opsi ini khusus aplikasi di server windows saya. Oleh karena itu saya menggunakan -d opsi dari perintah php.
Saya menyetel open_basedir untuk setiap aplikasi sebagai salah satu opsi ini.
Saya perlu mengatur beberapa url sebagai open_basedir, termasuk UNC-Path , dan sintaks untuk kasus ini agak sulit ditemukan. Anda harus memisahkan jalur dengan titik koma dan jika jalur pertama Anda dimulai dengan driveletter, Anda mungkin harus memulai daftar dengan titik koma juga. Setidaknya itulah yang berhasil untuk saya.
Contoh:
php.exe -d open_basedir=;d:/www/applicationRoot;//internal.unc.path/ressource/
sumber
Cari saja
di php.ini dan nonaktifkan. Itulah solusi paling sederhana untuk mengatasi masalah ini.
Sebelum Perubahan
open_basedir =
Setelah Perubahan
;open_basedir =
Ps - Setelah perubahan jangan lupa restart server Anda.
Nikmati ;)
sumber