2012-09-11 11 views
17

Estructura de mis archivos es así:PHP CLI include() no es encontrar el archivo

config.php 
script 
|--myscript.php 

myscript.php

<?php 
require '../config.php'; 
?> 

Al ejecutar php /path/to/myscript.php consigo Warning: require(../config.php): failed to open stream: No such file or directory.

Whats ¿la razón?

+0

intentarlo con una ruta absoluta, en lugar de una relación. – andrewsi

+0

sí, estoy muy decepcionado ahora. – nick

Respuesta

24

Eso es porque su directorio de trabajo actual es el que se llama a su comando en, no el que la secuencia de comandos se encuentra en.

Uso

require __DIR__ . '/../config.php'; 

lugar. __DIR__ es una const que apunta al directorio en el que se encuentra el archivo actual.

1

Lo más probable es que tenga un directorio de trabajo incorrecto, por lo que sus rutas relativas no apuntan a donde espera. Para ver cómo ve PHP que añadir:

echo getcwd(); 

como la primera línea del script.

1

Si no quiere (o no puede) cambiar la línea require en el código, simplemente cd al directorio que el script espera para ser ejecutado dentro antes de ejecutar el script:

cd /path/to 
php /path/to/myscript.php 
6

una manera de hacerlo, es la siguiente:

php -d include_path=/path/to/config.php script.php 

-d se usa para establecer directivas INI en tiempo de ejecución, por lo que no tiene ningún código/configs/directorios cambiantes.

0

Es necesario utilizar la ruta absoluta o cambiar el directorio de trabajo:

chdir(dirname(__FILE__));