Jednoduché řešení s chybou open_basedir nejen na VPS u Wedosu

Pokud jste narazili v nejen u VPS Wedosu na problém s open_basedir, který vypadá podobně jako:

Warning: file_exists() [function.file-exists]: open_basedir restriction
in effect. File(/var/tmp//1220989448) is not within the allowed
path(s): (/home/usr123/:/tmp:/usr/local/lib/php/) in /usr/home/usr123
/../wp-includes/functions.php on line 1960 

mám pro vás snadné řešení problému.

V čem je problém?

Problém je v tom, že eAccelerator, který máte na serveru, při zavolání v PHP například request(„ahoj.php“), se snaží číst PHP soubory, které nejsou v open_basedir, protože je tahá z keše, která je jednoduše jinde.

Řešení

Dá se to obejít jedním elegantním, byť ne zcela profesionálním způsobem. V případě VPS u Wedosu stačí vytvořit adresář usr/share/php5/cashe-eaccelerator. Ten již povolené basedir neporušuje. Dále je potřeba v souboru etc/php.d/eaccelerator.ini nastavit tuto novou cestu u proměnné accelerator.cashdir. Jakou konkrétní cestu vybrat, záleží na vás a vaší konfiguraci serveru. Osobně jsem si příkazem phpinfo() zjistil, které adresáře jsou povolené a do jednoho nezajímavého jsem nacpal kešku (nezapomeňte na nastavení práv). Nejsem žádný linuxový guru a také jsem se nechtěl hrabat ve virtuálním stroji, tak jsem si vybrat toto snadné řešení.

K VPS u Wedosu. Koukal jsem, že každý web má vytvořená svá pravidla, s nimi i tedy open_basedir. Ty jsou změnit v nastavení každého virtuálního hostingu.

Jinak existuje ještě jeden triviální způsob, jak problém s open_basedir vyřešit. V rootu si vytvořte všem známý .htaccess a do něj přidejte dva následující řádky, které vypnou eAccelerator, což je škoda 🙁

php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0

Nejlepší řešení je následující vyžadující přístup přes SSH:

Jednoduše se provede update eAcceleratoru

  • 1. Stáhněte si nejnovější verzi z http://eaccelerator.net/ (tar.gz archiv)
  • 2. Soubor rozbalte „tar -xf eaccelerator-eaccelerator-42067ac.tar.gz“ (verze může být časem vyšší)
  • 3. příkazevm „cd eaccelerator-eaccelerator-42067ac“ otevřete adresář
  • 4. spusťe příkaz „phpize“, který provede kompilaci souborů
  • 5. spusťe příkaz ./configure –enable-shared –without-eaccelerator-use-inode –with-php-config=/CESTA_K_PHP_CONFIG/php-config
  • 6. dále příkaz „make „
  • 7. nakonec, pokud vše proběhlo bez chyb, pak pak ještě příkaz „make install
  • 8. Restartovat Apache

Jedna myšlenka na “Jednoduché řešení s chybou open_basedir nejen na VPS u Wedosu”

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

This site uses Akismet to reduce spam. Learn how your comment data is processed.