Solucionar problemas

Error PHP al usar require_once, require, include_once o include

Revisado el 3 min de lectura errores php php

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

  1. Comprueba la ruta exacta del error, la existencia del fichero y las mayúsculas y minúsculas de cada nombre.
  2. Verifica el DocumentRoot y la estructura real del despliegue. Una web no tiene que estar necesariamente en /home/usuario/public_html y puede cargar código situado fuera del directorio público.
  3. Revisa permisos del fichero y de recorrido de los directorios padre, además de propietario.
  4. Si el fichero existe y es legible, comprueba restricciones open_basedir, include_path, wrappers y el directorio de trabajo usado para una ruta relativa.
  5. 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

¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.