En un servidor web con Magento la zona de administracion era imposible entrar a ciertas zonas, investigando el log que deja Magento observo las siguientes lineas.
2011-06-16T14:52:10+00:00 ERR (3): Warning: is_readable() [<a href=’function.is-readable’>function.is-readable</a>]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/) in /var/www/dominio.es/lib/Zend/Cache/Backend.php on line 208
2011-06-16T14:52:10+00:00 ERR (3): Warning: realpath() [<a href=’function.realpath’>function.realpath</a>]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/) in /var/www/dominio.es/lib/Zend/Cache/Backend.php on line 185
2011-06-16T14:52:10+00:00 ERR (3): Warning: unlink() [<a href=’function.unlink’>function.unlink</a>]: open_basedir restriction in effect. File(/tmp/H18qtQ) is not within the allowed path(s): (/var/www/) in /var/www/dominio.es/lib/Zend/Cache/Backend.php on line 186
2011-06-16T14:52:10+00:00 ERR (3): Warning: is_readable() [<a href=’function.is-readable’>function.is-readable</a>]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/) in /var/www/dominio.es/lib/Zend/Cache/Backend.php on line 208
Esta claro que necesita escribir en el tmp, pero Centos no permite en el raiz lo cual esta muy bien asi que debemos usar una directiva de php.ini para cambiarlo.
Lo primero que hice fue configurar los virtualhost para que cada uno usara su php.ini pondre el proceso en manual de Apache para ser mas ordenado 🙂
Una vez hecho cambiamos en el php.ini de nuestro dominio añadiendo la linea siguiente.
open_basedir = «/var/www/dominio.es/:/tmp»
Si teneis varios php.ini he encontrado este scrip que lo replaza automaticamente.
find /var/www/fcgi/ -iname php.ini -exec sed -e '/^open_basedir/a\open_basedir=none' -e 's/^open_basedir/#&/g' "{}" -i ";"
Mas directivas de php
Tambien lo podemos hacer por el .htaccessphp_value open_basedir /var/www/dominio.es/:/tmp/