Cuando tienes instalado PHP en Apache usando FastCGI cada página tiene su propio php.ini dentro de /var/www/fcgi/nombre_dominio

Esto tienes sus ventajas y sus inconvenientes, pero cuando quieres cambiar una directiva en todos, pues tienes que editar varios ficheros para que se apliquen a todos los dominios donde quieras modificar algo. Esta mañana me ha surgido la necesidad de desactivar la directiva open_basedir de todas mis web y como que encontrado un comando para que me lo haga en todos, pues lo dejo por aquí por si a alguien la sirve:


find /var/www/fcgi/ -iname php.ini -exec sed -e '/^open_basedir/a\open_basedir=none'
-e 's/^open_basedir/#&/g' "{}" -i ";"


Este comando encuentra todos los archivos php.ini dentro de /var/www y sus subdirectorios y a cada uno de ellos le aplica el comando sed que lo que hace es comentar la linea actual donde está open_basedir y añadirle otra con el valor open_basedir=none

Una vez hecho esto, reiniciamos el apache y listo.

Para comprobar que todos los open_basedir se han cambiado podemos ejecutar:


find /var/www/fcgi/ -iname php.ini -exec cat "{}" ";" | grep ^open_basedir

No se si habrá otra solución más simple, supongo que siempre se puede mejorar, pero a mi me ha funcionado.