🚨 Error `open_basedir restriction in effect`
Si al acceder al plugin Backup de FacturaScripts puede aparecer el siguiente error:
SplFileInfo::isDir(): open_basedir restriction in effect.
File(/..) is not within the allowed path(s):
(/php_sessions:/home/uploads:/tmp:/var/www/errors:)
El problema no es un bug del plugin Backup, sino una restricción de seguridad de PHP.
PHP tiene activada la directiva open_basedir, que limita los directorios a los que los scripts pueden acceder. En este caso, el plugin Backup intenta comprobar rutas del sistema de archivos usando SplFileInfo::isDir(), pero alguna de esas rutas queda fuera de los directorios permitidos por open_basedir.
Cómo comprobar si open_basedir está activo
Puedes comprobarlo de varias formas:
Opción 1: phpinfo()
Crea un archivo phpinfo.php con este contenido:
<?php phpinfo();
Busca el valor open_basedir.
Opción 2: desde línea de comandos
php -i | grep open_basedir
Soluciones
✅ Solución recomendada (servidores propios / VPS)
Añadir el directorio de FacturaScripts (o el directorio raíz del sistema de backups) a open_basedir.
Ejemplo en php.ini o configuración del pool de PHP-FPM:
open_basedir = /var/www:/tmp:/home/uploads:/php_sessions:/var/www/errors
Después de modificarlo, reinicia el servicio:
systemctl restart php-fpm
# o
systemctl restart apache2
⚠️ Hosting compartido
En muchos hostings compartidos no es posible modificar open_basedir.
Opciones disponibles:
- Solicitar al proveedor que añada la ruta del proyecto a
open_basedir - Usar un hosting que permita modificar esta directiva
- Ejecutar FacturaScripts en un VPS o servidor propio
❌ Solución no recomendada
Desactivar open_basedir completamente:
open_basedir = none
⚠️ No recomendado en producción, ya que elimina una capa importante de seguridad.
Resumen
- El error se debe a una restricción de seguridad de PHP
- El plugin Backup funciona correctamente
- Es necesario permitir el acceso a las rutas usadas por FacturaScripts
- En hosting compartido puede ser una limitación del proveedor