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