GNU/Linux >> Znalost Linux >  >> Panels >> cPanel

PHP skripty open_basedir Omezení v Effect Error

Vylepšení ochrany PHP open_basedir je bezpečnostní opatření v nouzovém režimu, které uživatelům brání v otevírání souborů nebo skriptů umístěných mimo jejich domovský adresář pomocí PHP, pokud to složka výslovně nevyloučila. Nastavení PHP open_basedir, pokud je povoleno, zajistí, že všechny operace se soubory budou omezeny na soubory v určitém adresáři, a tím zabrání php skriptům pro konkrétního uživatele v přístupu k souborům v účtu neoprávněného uživatele. Když se skript pokusí otevřít soubor, například pomocí fopen() nebo gzopen(), zkontroluje se umístění souboru. Pokud je soubor mimo zadaný nebo přípustný adresářový strom, PHP jej odmítne otevřít a mohou nastat následující chyby:

Upozornění:file_exists() [funkce.file-exists]:platí omezení open_basedir. Soubor(/home/user_name/public_html/wp-content/uploads/2006/12/picture.jpg) není v povolených cestách:(/home/user_name:/usr/lib/php:/usr/local /lib/php:/tmp) v /home/user_name/public_html/wp-admin/inline-uploading.php na řádku 226

Výše uvedená chybová zpráva se zobrazí v protokolu chyb webového serveru Apache httpd (error_log), který hostuje blog WordPress. Problém však může nastat u všech systémů nebo webových stránek, které používají PHP jako skriptovací jazyk.

Řešením nebo zástupným řešením problému s omezením open_basedir je úplné zakázání ochrany PHP open_basedir nebo vyloučení ochrany pro určité účty privilegovaných uživatelů nebo povolení přístupu do dalšího adresáře pro skripty PHP.

Pokud používáte cPanel WebHost Manager (WHM), můžete snadno zakázat ochranu PHP open_basedir nebo vyloučit určité uživatele z ochrany pomocí WHM. Jednoduše přejděte na „Tweak Security“ v části „Security“ a poté vyberte odkaz „Configure“ pro „Php open_basedir Tweak“. Uvnitř můžete povolit nebo zakázat ochranu php open_basedir nebo vyloučit a zahrnout hostitele z ochrany.

Pokud používáte ovládací panel hostingu Plesk, možná budete muset ručně upravit konfigurační soubor Apache vhost.conf a vhost_ssl.conf a přidat nebo upravit následující řádky php_admin_value open_basedir:

<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>

Poznámka:U hostitelů SSL v souboru vhost_ssl.conf bude cesta k adresáři končit „httpsdocs“ namísto „httpdocs“.

Cesty (výše jsou pouze příklady a mají být nahrazeny skutečnou cestou), které za open_basedir jsou adresáře, které konkrétně umožňovaly přístup skriptům PHP v účtu domény vhost, takže můžete přidat další adresáře, do kterých jsou soubory uloženy a které jsou potřeba. otevřít pomocí PHP, každý oddělený barvou „:“. Buďte však opatrní, protože to může vystavit váš systém bezpečnostnímu podvodu.

Po dokončení spusťte níže uvedený příkaz, aby se změny projevily, a poté restartujte webový server Apache httpd (restart apache2ctl nebo httpd restart):

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

Pokud musíte ručně upravit konfigurační soubor Apache, abyste deaktivovali ochranu PHP open_basedir, jednoduše otevřete soubor httpd.conf a vyhledejte řádky, které začínají následujícími znaky:

php_admin_value open_basedir …..

Nahraďte celý řádek pod virtuálním hostitelem pro uživatelský účet domény, u kterého chcete ochranu deaktivovat, následujícím řádkem:

php_admin_value open_basedir none

Můžete se také rozhodnout povolit svým skriptům PHP přístup k dalšímu adresáři, aniž byste deaktivovali ochranu. Na řádek lze přidat další adresář oddělený barvou „:“. Chcete-li například přidat /new_directory do seznamu povolených:

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"

Po dokončení úprav restartujte Apache. Všimněte si, že výše uvedené omezení seznamu povolených adresářů je ve skutečnosti prefix, nikoli název adresáře. To znamená, že „open_basedir =/dir/incl“ také umožňuje přístup k „/dir/include“ a „/dir/incls“, pokud existují. Pokud chcete omezit přístup pouze k určenému adresáři, zakončete lomítkem. Například:“open_basedir =/dir/incl/”.


cPanel
  1. Zpracování chyb ve skriptech Bash

  2. Volání nedefinované funkce simplexml_load_file() – chyba PHP [vyřešeno]

  3. Jak zapnout protokolování chyb PHP

  1. Nelze najít pspell – Opravit chybu konfigurace PHP

  2. O PHP

  3. Spouštějte skripty Perl/PHP z příkazového řádku

  1. Php Fatal Error:Call to Undefined Function Thesql_connect()?

  2. Jak povolit protokolování chyb PHP v Plesk 11

  3. Upozornění:file_exists() [funkce.file-exists]:platí omezení open_basedir.