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/”.