Solucionar problemas
Error PHP al usar require_once, require, include_once o include
Cuando PHP no puede abrir un fichero solicitado por require_once, require, include_once o include, el mensaje completo indica la ruta solicitada, que puede ser relativa, el archivo que hizo la llamada y su línea. require detiene la ejecución; include normalmente genera una advertencia y permite continuar.
Un ejemplo de mensaje es:
Fatal error: require(): Failed opening required '/home/usuario_cpanel/public_html/fichero.php' (include_path='.:php') in /home/usuario_cpanel/public_html/index.php on line 1
Este error indica que PHP no pudo abrir el recurso solicitado por require o include. Conserva también la advertencia anterior, porque puede precisar si falló la ruta, los permisos, open_basedir o include_path.
En el ejemplo, index.php llama en su línea 1 a fichero.php. PHP indica que no pudo abrirlo en esa ruta; no demuestra por sí solo que el fichero no exista.
Posibles causas y soluciones
- Comprueba la ruta exacta del error, la existencia del fichero y las mayúsculas y minúsculas de cada nombre.
- Verifica el
DocumentRooty la estructura real del despliegue. Una web no tiene que estar necesariamente en/home/usuario/public_htmly puede cargar código situado fuera del directorio público. - Revisa permisos del fichero y de recorrido de los directorios padre, además de propietario.
- Si el fichero existe y es legible, comprueba restricciones
open_basedir,include_path, wrappers y el directorio de trabajo usado para una ruta relativa. - Si desapareció, compara versiones, despliegues, copias y registros. Considera una intrusión solo cuando existan cambios, accesos u otras evidencias que la respalden.
Rutas estables y dependencias
Cuando el archivo pertenece al mismo proyecto, una ruta basada en __DIR__ evita depender del directorio desde el que se ejecuta el proceso:
require __DIR__ . '/config/bootstrap.php';
Es un ejemplo: ese archivo debe existir en la estructura real de tu aplicación. Si falta vendor/autoload.php, revisa el despliegue de dependencias con Composer y su archivo de bloqueo; no crees un archivo vacío ni sustituyas require por include para ocultarlo. No construyas una ruta de inclusión directamente desde datos de una petición.
También te puede ayudar
- Maximum execution time of X seconds exceeded in x.php Diagnostica qué agota max_execution_time y amplía el límite de forma temporal y acotada solo cuando...
- Depurar errores en aplicaciones o ficheros PHP Diagnostica una pantalla en blanco o un error 500 reproduciendo el fallo y consultando primero el re...
- Habilitar el registro de errores de PHP desde el fichero .htaccess Configura .htaccess para registrar temporalmente los errores PHP fuera de public_html, sin revelarlo...
- Registrar errores de PHP para un fichero concreto Captura errores de un único fichero PHP en un registro privado y temporal, manteniendo display_error...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.