GNU/Linux >> Belajar Linux >  >> Panels >> cPanel

Pembatasan Skrip PHP open_basedir dalam Kesalahan Efek

Tweak perlindungan open_basedir PHP adalah ukuran keamanan Safe Mode yang mencegah pengguna membuka file atau skrip yang terletak di luar direktori home mereka dengan PHP, kecuali folder tersebut secara khusus dikecualikan. Pengaturan PHP open_basedir jika diaktifkan, akan memastikan bahwa semua operasi file dibatasi pada file di bawah direktori tertentu, dan dengan demikian mencegah skrip php untuk pengguna tertentu mengakses file di akun pengguna yang tidak sah. Saat skrip mencoba membuka file dengan, misalnya, fopen() atau gzopen(), lokasi file diperiksa. Ketika file berada di luar pohon direktori yang ditentukan atau diizinkan, PHP akan menolak untuk membukanya dan kesalahan berikut dapat terjadi:

Peringatan:file_exists() [function.file-exists]:pembatasan open_basedir berlaku. File(/home/user_name/public_html/wp-content/uploads/2006/12/picture.jpg) tidak berada dalam jalur yang diizinkan:(/home/user_name:/usr/lib/php:/usr/local /lib/php:/tmp) di /home/user_name/public_html/wp-admin/inline-uploading.php on line 226

Pesan kesalahan di atas muncul pada log kesalahan server web Apache httpd (error_log) yang menghosting blog WordPress. Namun, masalah dapat terjadi pada semua sistem atau situs web yang menggunakan PHP sebagai bahasa skrip.

Solusi atau solusi untuk masalah pembatasan open_basedir adalah menonaktifkan perlindungan open_basedir PHP sama sekali, atau mengecualikan perlindungan untuk akun pengguna tertentu yang memiliki hak istimewa, atau mengizinkan akses ke direktori tambahan untuk skrip PHP.

Jika Anda menggunakan cPanel WebHost Manager (WHM), Anda dapat dengan mudah menonaktifkan perlindungan PHP open_basedir atau mengecualikan pengguna tertentu dari perlindungan dengan WHM. Cukup buka "Tweak Security" di bawah bagian "Security", lalu pilih tautan "Configure" untuk "Php open_basedir Tweak". Di dalamnya, Anda dapat mengaktifkan atau menonaktifkan php open_basedir Protection, atau mengecualikan dan menyertakan host dari perlindungan.

Jika Anda menggunakan panel kontrol hosting Plesk, Anda mungkin perlu mengedit file konfigurasi Apache secara manual dari vhost.conf dan vhost_ssl.conf, dan menambahkan atau mengedit baris open_basedir php_admin_value berikut menjadi berikut:

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir none
</Directory>

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir /full/path/to/dir:/full/path/to/directory/httpdocs:/tmp
</Directory>

Catatan:Untuk host SSL di file vhost_ssl.conf, jalur Direktori akan diakhiri dengan “httpsdocs”, bukan “httpdocs”.

Path (di atas hanya contoh dan akan diganti dengan path asli) yang berada di belakang open_basedir adalah direktori yang secara khusus diizinkan untuk diakses oleh skrip PHP di akun domain vhost, sehingga Anda dapat menambahkan lebih banyak direktori tempat file disimpan dan dibutuhkan untuk dibuka oleh PHP, masing-masing dipisahkan dengan warna “:”. Namun berhati-hatilah karena dapat membuat sistem Anda rentan terhadap penipuan keamanan.

Setelah selesai, jalankan perintah di bawah ini untuk membuat perubahan efektif, lalu restart server web Apache httpd (apache2ctl restart atau httpd restart):

$PRODUCT_ROOT_D/admin/sbin/websrvmng -v -a

Jika Anda harus mengedit file konfigurasi Apache secara manual untuk menonaktifkan perlindungan open_basedir PHP, cukup buka file httpd.conf, dan cari baris yang dimulai dengan karakter berikut:

php_admin_value open_basedir …..

Ganti seluruh baris di bawah host virtual untuk akun pengguna domain yang ingin Anda nonaktifkan perlindungannya dengan baris berikut untuk menonaktifkannya:

php_admin_value open_basedir none

Anda juga dapat memilih untuk mengizinkan skrip PHP Anda mengakses direktori tambahan tanpa menonaktifkan perlindungan. Direktori tambahan dapat ditambahkan ke baris, dipisahkan dengan warna ":". Misalnya, untuk menambahkan /new_directory ke daftar yang diizinkan:

php_admin_value open_basedir "/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp"
php_admin_value open_basedir "/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp:/new_directory"

Restart Apache setelah selesai mengedit. Perhatikan bahwa pembatasan daftar direktori yang diizinkan di atas sebenarnya adalah awalan, bukan nama direktori. Ini berarti bahwa “open_basedir =/dir/incl” juga memungkinkan akses ke “/dir/include” dan “/dir/incls” jika ada. Bila Anda ingin membatasi akses hanya ke direktori tertentu, akhiri dengan garis miring. Misalnya:“open_basedir =/dir/incl/”.


cPanel
  1. Penanganan kesalahan dalam skrip Bash

  2. Panggil ke fungsi yang tidak ditentukan simplexml_load_file() – Kesalahan PHP [Terpecahkan]

  3. Php Fatal Error:Panggilan Ke Fungsi Tidak Terdefinisi Thesql_connect ()?

  1. Cara Mengaktifkan PHP Error Logging di Plesk 11

  2. Peringatan:file_exists() [function.file-exists]:pembatasan open_basedir berlaku.

  3. Cara mengaktifkan pencatatan kesalahan PHP

  1. Tidak dapat menemukan pspell – Perbaiki Kesalahan Konfigurasi PHP

  2. Tentang PHP

  3. Kesalahan fatal:Panggilan ke fungsi yang tidak ditentukan mb_substr() Kesalahan