php path cron apache2 include-path

¿Qué significa "(include_path=''.:/usr/share/pear:/usr/share/php'')"?



cron apache2 (6)

Tengo una estructura de archivos en EC2 como: pero enfrentando un problema de referencia de archivos.

index.php -db -config.php -cron -cron1.php

He intentado hacer referencia a archivos como:

`require_once (dirname(__FILE__).''/db/config.php'');` `require_once (($_SERVER[''DOCUMENT_ROOT'']).''/db/config.php'');`

pero cron no se ejecuta. Da error en el correo como

`PHP Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3 Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3 PHP Fatal error: require_once(): Failed opening required ''/db/config.php'' (include_path=''.:/usr/share/pear:/usr/share/php'') in /var/www/html/cron/cron1.php on line 3 Fatal error: require_once(): Failed opening required ''/db/config.php'' (include_path=''.:/usr/share/pear:/usr/share/php'') in /var/www/html/cron/cron1.php on line 3`


Eso es solo los directorios que le muestran dónde estaba PHP buscando su archivo. Asegúrese de que cron1.php exista donde cree que lo hace. Y asegúrese de saber dónde dirname(__FILE__) y $_SERVER[''DOCUMENT_ROOT''] apuntan a donde esperaban.

Este valor se puede ajustar en su archivo php.ini.


Si miras el constante PATH_SEPARATOR de PHP, verás que es ":" para ti.

Si separa la cadena ".: / Usr / share / pear: / usr / share / php" usando ese carácter, obtendrá 3 partes

  • . (esto significa el directorio actual en el que se encuentra su código)
  • / usr / share / pear
  • / usr / share / ph

Cualquier intento de incluir cosas () / require (), se buscará en estos directorios, en este orden.

Le muestra eso en el mensaje de error para informarle dónde NO pudo encontrar el archivo que estaba tratando de requerir ()

Para su primer requerimiento, si eso está siendo incluido en su index.php, entonces no necesita las cosas del directorio, solo haga lo siguiente:

require_once ( ''db/config.php'');



Solución al problema

como lo menciona Uberfuzzy [causa real del problema]

Si miras la constante de PHP [PATH_SEPARATOR] [1], verás que es ":" para ti.

Si separa la cadena ".: / Usr / share / pear: / usr / share / php" usando ese carácter, obtendrá 3 partes

  • . (esto significa el directorio actual en el que se encuentra su código)
  • / usr / share / pear
  • / usr / share / ph

Cualquier intento de incluir cosas () / require (), se buscará en estos directorios, en este orden.

Le muestra eso en el mensaje de error para informarle dónde NO pudo encontrar el archivo que estaba tratando de requerir ()

Esa fue la causa del error.

Ahora llegando a la solución

  1. Paso 1 : encuentra tu archivo php.ini usando el comando php --ini (en mi caso: /etc/php5/cli/php.ini )
  2. Paso 2 : encuentra include_path en vi usando esc luego presiona /include_path luego enter
  3. Paso 3 : elimine el comentario de esa línea e incluya su directorio del servidor, su ruta debe verse así: include_path = ".:/usr/share/php:/var/www/<directory>/"
  4. Paso 4: reiniciar apache sudo service apache2 restart

Eso es todo. Espero eso ayude.


Tuve un problema similar. Solo para ayudar a alguien con el mismo problema:

Mi error fue el atributo de archivo de usuario para los archivos en / var / www. Después de cambiarlos al usuario "www-data", el problema desapareció.


Tuve el mismo error al incluir el archivo de la raíz de mi proyecto en codeigniter . Lo estaba usando en common.php de mi proyecto.

<?php include_once base_url().''csrf-magic-master/csrf-magic.php''; ?>

Lo cambié a

<?php include_once (''csrf-magic-master/csrf-magic.php''); ?>

Trabajando bien ahora.