Ubuntu 10.04, MySQL 5.1, Apache 2.2 y PHP 5.2/5.3:
Acabo de descubrir que estoy usando la versión incorrecta de PHP para una aplicación CRM. Una vez que descubrí cómo hacer un phpinfo()
script simple para decirme qué está usando Apache2, intenté cambiarlo php.ini
para que mi servidor web usara el PHP que quiero. Bueno, este es mi problema. No estoy seguro de cómo hacer eso.
Compilé la versión de PHP que quiero /etc
aquí:
/etc/php-5.2.8/
Dentro de esto, había un php.ini-recommended
archivo al que le hice algunos cambios y al que le cambié el nombre php.ini
para que PHP lo usara. Pero cuando abrí mi navegador, borré mi historial y fui a la http://localhost<CRM dir>/install.php
dirección, el asistente todavía dice que no estoy usando la versión correcta de PHP.
Residencia en esta publicación¿Qué tengo que hacer para cambiar la versión de PHP que aparece después de ejecutar mi test.php
script? En otras palabras, phpinfo()
dice que estoy ejecutando PHP 5.3.2, pero quiero cambiarlo a mi versión compilada 5.2.8 ubicada en /etc
.
Respuesta1
Dependiendo de su servidor, debería buscar Apache, no PHP.
(Para RHEL/CentOS) mira/etc/httpd/conf.d/php.ini
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated web pages.
#
LoadModule php5_module modules/libphp5.so
#
# Causes the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php
Verás que tu módulo PHP es modules/libphp5.so
.
AddHandler php5-script .php
le dice a Apache que ejecute PHP en cualquier archivo con la extensión .php
.
Si está utilizando un sistema operativo basado en RPM, probablemente sea más fácil desinstalar (suponiendo que pueda hacerlo) la versión actual de PHP y reinstalar la versión que está buscando.
rpm -qa | grep php
le mostrará qué versión de PHP está instalada actualmente.
Respuesta2
Si ya ha instalado otra versión de php, sólo necesita cambiar el módulo php* utilizado por apache.
por ejemplo, tengo php5 y php7.0. Cuando quiero que Apache use php7.0, solo necesito habilitar su módulo y deshabilitar el módulo php5.
sudo a2dismod php5
sudo a2enmod php7.0
Respuesta3
Hay dos métodos principales para instalar una nueva versión de PHP y decirle a Apache que la use: mod_php
y php-fpm
.
Nota:El método preferido es php-fpm
, y muchas distribuciones nuevas (incluido Fedora) lo utilizan de forma predeterminada.
Instalar PHP como módulo Apache SAPI
Aquíes la guía sobre esto para sistemas Unix, de la documentación oficial. Le faltan algunos puntos (al menos para mi configuración), así que sigo los pasos:
Construya PHP desde la fuente. En el
./configure
paso, use--with-apxs2
. Esto creará un módulo de controlador Apache 2 compartido para usted.Asegúrese de tener
apxs
el comando definido en su ruta o especifique su ruta como valor de la opción (es decir--with-apxs2=/path/to/apxs
).Por ejemplo, si instaló Apache en todo el sistema y desea instalar este comando también (por ejemplo, en un entorno local), en Fedora y sus derivados, puede instalarlo de la siguiente manera:
sudo dnf install httpd-devel
Una vez finalizada la compilación (es decir, después de
make
omake test
), ejecútelomake install
(tal vez como root). Obviamente, esto instalará PHP en la ruta que especificó (es decir, con--prefix
).Lo que se hace justo antes de instalar PHP es, debido a la
--with-apxs2
opción, instalar el módulo PHP apache2handler SAPI. Prepara el objeto compartido (por ejemplo, en/usr/lib64/httpd/modules/libphp.so
) y activa el módulo (por ejemplo, en/etc/httpd/conf/httpd.conf
), agregando una de las siguientes líneas al archivo de configuración de Apache, dependiendo de la versión de PHP que haya instalado (la línea se inserta debajo de la sección "Dynamic Shared Soporte de objetos (DSO)"):# In the case of PHP8 LoadModule php_module /usr/lib64/httpd/modules/libphp.so # In the case of PHP7 LoadModule php7_module /usr/lib64/httpd/modules/libphp.so
Nota:Al activar las versiones de PHP, especialmente las principales, tenga en cuenta comprobar que sólo hay uno de estos
LoadModule
mensajes para PHP disponible; de lo contrario, el servidor Apache se niega a iniciarse.
Instale PHP como PHP-FPM (FastCGI Process Manager)
Por determinar. :)
Pasos finales
PHP 8.0 y superior paso adicional
En el caso de que su distribución aún no sea compatible con PHP8 (por ejemplo, Fedora 34) y haya instalado Apache2 desde el administrador de paquetes, debe dar un paso más.
El problema es que, desde PHP 8.0 en adelante, Apache2 usa identificadores diferentes para los módulos SAPI que antes. Estos identificadores se utilizan para detectar si está utilizando mod_php
o php-fpm
en los archivos de configuración. Para PHP5, era php5_module
y mod_php5
; para PHP7, es php7_module
y mod_php7
, y para PHP8, es php_module
y mod_php
.
En este caso, navegue hasta el directorio de configuraciones de Apache2 (p. ej. /etc/httpd
) y comience a editar el archivo conf.d/php.conf
. Hay dos IfModule
secciones allí: una para habilitarla php-fpm
si no la usas mod_php
y la otra para habilitarla mod_php
si la estás usando (es decir, usarla LoadModule
en algún lugar de las configuraciones). Debe actualizar estas condiciones para cubrir también PHP8.
Por ejemplo, considere lo siguiente:
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
# Enable PHP-FPM configuration
</IfModule>
</IfModule>
Deberías rodear la configuración principal con una IfModule
sección más como esta:
<IfModule !mod_php.c>
# Enable PHP-FPM configuration
</IfModule>
Y haga lo mismo mod_php
también con la sección de configuración del habilitador.
Último paso
Reinicie el servicio Apache:
service httpd restart
Ahora phpinfo()
debería mostrarle la nueva versión de PHP que acaba de instalar. Deberías estar feliz ahora. :)
Respuesta4
Tuve el mismo problema donde phpinfo() mostraba la versión 7.0 aunque había actualizado a la versión 7.3. Y resulta que simplemente tenía quereiniciar apache.
Lo usé sudo systemctl restart httpd
en centos7