2012-06-01 29 views
22

El php que se ejecuta en el servidor web y la versión CLI no está utilizando el mismo archivo php.ini. Si hago un comando php --ini, se muestra esteCómo cambiar la ruta a php.ini en PHP CLI versión

Configuration File (php.ini) Path: C:\Windows 
Loaded Configuration File:   C:\wamp\bin\php\php5.3.8\php.ini 
Scan for additional .ini files in: (none) 
Additional .ini files parsed:  (none) 

mientras mi versión web utiliza el php.ini en C:\wamp\bin\apache\Apache2.2.21\bin\php.ini. Esto es probablemente muy común para las personas que usan wamp.

¿Cómo cambio el archivo de configuración cargada para leer desde C:\wamp\bin\apache\Apache2.2.21\bin\php.ini, así que no tengo que mantener 2 versiones diferentes de php.ini?

Respuesta

15

por http://php.net/configuration.file:

php.ini se busca en estas ubicaciones (en orden):

Módulo
  • SAPI ubicación específica (Directiva PHPIniDir en Apache 2, opción de línea de comandos -c en CGI y CLI, el parámetro php_ini en NSAPI, variable de entorno PHP_INI_PATH en THTTPD)
  • La variable de entorno PHPRC. Antes de PHP 5.2.0, esto se verificó después de la clave de registro que se menciona a continuación.
  • A partir de PHP 5.2.0, la ubicación del archivo php.ini se puede establecer para diferentes versiones de PHP. Las siguientes claves del registro se examinan en orden:
    • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xyz], [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xy] y [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ x], donde x, y, z significa las versiones principales, menores y de lanzamiento de PHP. Si hay un valor para IniFilePath en cualquiera de estas teclas, el primero encontrado se usará como la ubicación de php.ini (solo Windows).
    • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP], valor de IniFilePath (solo Windows).
  • Directorio de trabajo actual (excepto CLI).
  • El directorio del servidor web (para módulos SAPI) o el directorio de PHP (de lo contrario, en Windows).
  • Directorio de Windows (C: \ windows o C: \ winnt) (para Windows), o opción de tiempo de compilación --with-config-file-path.

Para CLI, la mejor opción es, probablemente, ya sea para establecer la variable de entorno $PHPRC para la cuenta que se ejecuta las secuencias de comandos, o recompilar PHP con una opción de configuración --with-config-file-path diferente.

También puede anular el php.ini dir búsqueda en función de cada ejecución especificando la opción -c al invocar PHP:

 
> php --help 
Usage: php [options] [-f] [--] [args...] 
... 
    -c | Look for php.ini file in this directory 

+0

por lo tanto, es una máquina de Windows que ejecuta wamp. ¿Cómo configuro $ PHPRC? – Sufendy

+2

es solo una variable de entorno, google for 'set environment variable windows' debería dar tutoriales. – goat

0

intente ejecutar la función phpinfo() en ambos lados

servidor web y CLI y averiguar la ubicación exacta de su archivo php.ini para ambos lados

y mantienen esos archivos sólo

+2

ya lo saben los lugares ambos archivos. La pregunta es cómo unificarlos. – Sufendy

1

He pasado cerca de 3 horas tratando de hacer exactamente lo que pide la pregunta . No pudo hacerlo. Me rendí y copié ese php.ini a C: \ Windows y cambié mi variable ENV "PHPRC" a C: \ Windows (y en httpd.conf). De esta forma, tanto mi CLI php como Apach php e están usando el mismo archivo. No pude obtener "php -m" para mostrar los módulos que había cargado en mi php.ini mientras duraba este cambio ...

+0

Esta fue la clave para mí. De hecho, eliminé la variable de entorno PHPRC, reinicié y php de manera predeterminada busqué en la misma ruta que el directorio de trabajo actual. ¡Gracias! – AS7K

7

Especificando la variable de entorno PHPRC para que apunte al mismo php. ini como el que usa Apache trabajó para mí en Ubuntu

export PHPRC=/etc/php5/apache2/php.ini 

o ponerlo en el directorio $ HOME/.bashrc para importar cada vez que se inicia cli

Cuestiones relacionadas