Pregunta

Puedo configurar la ruta de inclusión de PHP en el php.ini:

include_path = /path/to/site/includes/

Pero luego otros sitios web se ven afectados y eso no sirve de nada.

Puedo configurar la inclusión de PHP al inicio de cada archivo:

$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

Pero eso parece una mala práctica y desordena las cosas.

Entonces puedo incluir eso y luego incluirlo en cada archivo:

include 'includes/config.php';

o

include '../includes/config.php';

Esto es lo que estoy haciendo ahora, pero la ruta de inclusión de config.php cambiará dependiendo de lo que lo incluya.

¿Existe una mejor manera?¿Importa?

¿Fue útil?

Solución

Si está utilizando Apache como servidor web, puede anular (si lo permite) la configuración usando .htaccess archivos.Ver el manual de PHP para detalles.

Básicamente pones un archivo llamado .htaccess en la raíz de su sitio web, que contiene algo de PHP ini valores.Siempre que haya configurado Apache para permitir anulaciones, este sitio utilizará todos los valores en su configuración de PHP, + los valores que especifique en el .htaccess archivo.

Sólo se puede utilizar con PHP_INI_ALL y PHP_INI_PERDIR tipo de directivas

como se indica en la página que vinculé.Si hace clic en la lista completa, verá que la ruta de inclusión es una PHP_INI_ALL directiva.

Otros consejos

Erik Van Brakel dio, en mi humilde opinión, una de las mejores respuestas.

Además, si utiliza Apache y hosts virtuales, puede configurar inclusiones directamente en ellos.Con este método, no tendrás que acordarte de dejar los comandos php_admin en tu .htaccess.

Usar una php.ini archivo en sitio web raíz, si su configuración utiliza PHP como CGI (el caso más frecuente en hosts compartidos) con la misma sintaxis que en todo el servidor php.ini;ponerlo en .htaccess si tienes PHP como módulo de Apache (haz un phpinfo() si no está seguro):

php_value include_path "wherever"

Tenga en cuenta que por carpeta php.ini does no afecta subcarpetas.

¿Por qué crees que agregar para incluir la ruta es una mala práctica?

Este código cerca de la parte superior del script raíz no debería ser tan malo...

$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());

En mi humilde opinión, la principal ventaja es que es portátil y compatible no sólo con Apache.

EDITAR:Vi un inconveniente de este método:pequeño impacto en el rendimiento.ver http://www.geeksengine.com/article/php-include-path.html

Dependiendo de cómo esté configurado su host, es posible que se le permita colocar un php.ini archivo en la raíz de su directorio de inicio con directivas de configuración adicionales.

Su aplicación debe tener un archivo de configuración escrito en PHP.Luego inclúyalo con una página relativa en cada página del programa.Ese archivo de configuración tendrá una variable para la ruta al directorio de inclusión, al directorio de plantillas, al directorio de imágenes, etc.

Puedes configurar include_path en su archivo php.ini también.Soy un experto en Perl, así que espero poder cargar inclusiones y tener include hacer lo correcto.Tengo todas mis inclusiones en un directorio específico, que se agrega a include_path.puedo hacer cosas como

require_once "ClassName.php";

No necesito preocuparme por rutas relativas o ubicaciones de archivos.

También he escrito el mío CustomRequire hacer cosas como

function CustomRequire ($file) {
    if(defined('MYINCLUDEPATH')) {
        require_once MYINCLUDEPATH . "/$file";
    } else {
        require_once $file;
    }
}

De esa manera puedo cambiar la forma en que hago las inclusiones en una fecha posterior.Por supuesto, aún necesitas encontrar una manera de incluir tu código de inclusión :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top