{"id":1370,"date":"2026-02-21T04:39:45","date_gmt":"2026-02-21T04:39:45","guid":{"rendered":"https:\/\/derecho.unap.edu.pe\/mespinoza\/?p=1370"},"modified":"2026-02-21T04:39:46","modified_gmt":"2026-02-21T04:39:46","slug":"instalacion-de-multi-php-con-seleccion-por-htaccess-en-debian-13","status":"publish","type":"post","link":"https:\/\/derecho.unap.edu.pe\/mespinoza\/2026\/02\/instalacion-de-multi-php-con-seleccion-por-htaccess-en-debian-13\/","title":{"rendered":"Instalaci\u00f3n de Multi-PHP con selecci\u00f3n por .htaccess en Debian 13"},"content":{"rendered":"\n<p>En esta gu\u00eda aprender\u00e1s a configurar un servidor Debian 13 para ejecutar m\u00faltiples versiones de PHP simult\u00e1neamente, permitiendo que cada sitio web (o incluso carpetas espec\u00edficas) elija su versi\u00f3n de PHP mediante el archivo&nbsp;<code>.htaccess<\/code>. Esto es ideal para sitios en transici\u00f3n o aplicaciones con requisitos de compatibilidad antiguos (como PHP 7.4).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. Instalaci\u00f3n de Repositorios y Versiones de PHP<\/h2>\n\n\n\n<p>Debian 13 no incluye versiones antiguas de PHP por defecto. Utilizaremos el repositorio de&nbsp;<strong>Ond\u0159ej Sur\u00fd<\/strong>, que es el est\u00e1ndar de oro para PHP en Debian.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso A: Agregar el repositorio<\/h3>\n\n\n\n<p>Bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg\ncurl -sS https:\/\/packages.sury.org\/php\/apt.gpg | sudo gpg --dearmor -o \/usr\/share\/keyrings\/deb.sury.org-php.gpg\necho \"deb &#91;signed-by=\/usr\/share\/keyrings\/deb.sury.org-php.gpg] https:\/\/packages.sury.org\/php\/ $(ls_release -sc) main\" | sudo tee \/etc\/apt\/sources.list.d\/php.list\nsudo apt update\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Paso B: Instalaci\u00f3n de PHP y extensiones para WordPress<\/h3>\n\n\n\n<p>Para que WordPress funcione correctamente, no solo instalamos el motor (<code>fpm<\/code>), sino tambi\u00e9n las extensiones de base de datos, im\u00e1genes y compresi\u00f3n.<\/p>\n\n\n\n<p><strong>Para PHP 7.4:<\/strong><\/p>\n\n\n\n<p>Bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y php7.4-fpm php7.4-mysql php7.4-common php7.4-gd php7.4-mbstring php7.4-xml php7.4-curl php7.4-zip php7.4-imagick php7.4-intl\n<\/code><\/pre>\n\n\n\n<p><strong>Para PHP 8.4:<\/strong><\/p>\n\n\n\n<p>Bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y php8.4-fpm php8.4-mysql php8.4-common php8.4-gd php8.4-mbstring php8.4-xml php8.4-curl php8.4-zip php8.4-imagick php8.4-intl\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Preparaci\u00f3n de Apache<\/h2>\n\n\n\n<p>Para que el&nbsp;<code>.htaccess<\/code>&nbsp;tenga el control, debemos activar los m\u00f3dulos de comunicaci\u00f3n y&nbsp;<strong>desactivar<\/strong>&nbsp;cualquier configuraci\u00f3n global que fuerce una versi\u00f3n \u00fanica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso A: Activar m\u00f3dulos necesarios<\/h3>\n\n\n\n<p>Bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo a2enmod proxy_fcgi setenvif rewrite headers\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Paso B: Desactivar configuraciones r\u00edgidas (Muy importante)<\/h3>\n\n\n\n<p>Debian activa autom\u00e1ticamente la configuraci\u00f3n de la versi\u00f3n m\u00e1s reciente. Debemos desactivarla para que no ignore nuestras instrucciones del&nbsp;<code>.htaccess<\/code>:<\/p>\n\n\n\n<p>Bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo a2disconf php7.4-fpm\nsudo a2disconf php8.4-fpm\nsudo systemctl restart apache2\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Configuraci\u00f3n del VirtualHost (Puerto 80 y 443)<\/h2>\n\n\n\n<p>Si utilizas SSL (Certbot), tendr\u00e1s dos archivos de configuraci\u00f3n. Debes editar&nbsp;<strong>ambos<\/strong>&nbsp;para permitir que el archivo&nbsp;<code>.htaccess<\/code>&nbsp;funcione.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Edita el archivo normal:\u00a0<code>\/etc\/apache2\/sites-available\/tusitio.conf<\/code><\/li>\n\n\n\n<li>Edita el archivo SSL:\u00a0<code>\/etc\/apache2\/sites-available\/tusitio-le-ssl.conf<\/code><\/li>\n<\/ol>\n\n\n\n<p><strong>A\u00f1ade este bloque dentro de cada&nbsp;<code>&lt;VirtualHost&gt;<\/code>:<\/strong><\/p>\n\n\n\n<p>Apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \"\/var\/www\/html\/tu-proyecto\/public_html\"&gt;\n    Options Indexes FollowSymLinks\n    AllowOverride All\n    Require all granted\n&lt;\/Directory&gt;\n<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Nota:<\/strong>&nbsp;Sin&nbsp;<code>AllowOverride All<\/code>, Apache ignorar\u00e1 tu&nbsp;<code>.htaccess<\/code>&nbsp;y plugins como&nbsp;<em>Hide My WP<\/em>&nbsp;no podr\u00e1n cargar estilos CSS.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Selecci\u00f3n de Versi\u00f3n en el .htaccess<\/h2>\n\n\n\n<p>Ahora, simplemente crea o edita el archivo&nbsp;<code>.htaccess<\/code>&nbsp;en la carpeta de tu sitio web. A\u00f1ade las siguientes l\u00edneas al principio del archivo seg\u00fan la versi\u00f3n que necesites.<\/p>\n\n\n\n<p><strong>Para usar PHP 7.4:<\/strong><\/p>\n\n\n\n<p>Apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;FilesMatch \"\\.php$\"&gt;\n    SetHandler \"proxy:unix:\/var\/run\/php\/php7.4-fpm.sock|fcgi:\/\/localhost\"\n&lt;\/FilesMatch&gt;\n<\/code><\/pre>\n\n\n\n<p><strong>Para usar PHP 8.4:<\/strong><\/p>\n\n\n\n<p>Apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;FilesMatch \"\\.php$\"&gt;\n    SetHandler \"proxy:unix:\/var\/run\/php\/php8.4-fpm.sock|fcgi:\/\/localhost\"\n&lt;\/FilesMatch&gt;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Cuidados y Soluci\u00f3n de Errores Comunes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">A. Error de ruta del Socket<\/h3>\n\n\n\n<p>Aseg\u00farate de que la ruta sea&nbsp;<code>\/var\/run\/php\/phpX.X-fpm.sock<\/code>. Si el archivo no termina exactamente en&nbsp;<code>.sock<\/code>&nbsp;o la ruta es incorrecta, recibir\u00e1s un error&nbsp;<strong>503 Service Unavailable<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">B. El sitio se ve sin estilos (CSS roto)<\/h3>\n\n\n\n<p>Esto ocurre usualmente por dos razones:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>No habilitaste el m\u00f3dulo\u00a0<code>headers<\/code>\u00a0(<code>sudo a2enmod headers<\/code>).<\/li>\n\n\n\n<li>No agregaste el bloque\u00a0<code>&lt;Directory><\/code>\u00a0con\u00a0<code>AllowOverride All<\/code>\u00a0en el archivo de configuraci\u00f3n SSL (<code>-le-ssl.conf<\/code>).<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">C. Permisos de carpeta<\/h3>\n\n\n\n<p>Si el servidor no puede escribir archivos, aseg\u00farate de que el usuario&nbsp;<code>www-data<\/code>&nbsp;sea el due\u00f1o de la carpeta:<\/p>\n\n\n\n<p>Bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chown -R www-data:www-data \/ruta\/a\/tu\/web\/\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">D. Verificaci\u00f3n r\u00e1pida<\/h3>\n\n\n\n<p>Crea un archivo llamado&nbsp;<code>info.php<\/code>&nbsp;con el contenido&nbsp;<code>&lt;?php phpinfo(); ?&gt;<\/code>. C\u00e1mbialo de versi\u00f3n en el&nbsp;<code>.htaccess<\/code>&nbsp;y refresca el navegador. Si la versi\u00f3n cambia sin reiniciar Apache, \u00a1tu configuraci\u00f3n es un \u00e9xito!<\/p>\n\n\n\n<p><em>Declaraci\u00f3n de uso de IA generativa:<\/em> Se emple\u00f3 Gemini Flash para redactar el procedimiento que puse en pr\u00e1ctica para solucionar un caso real.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta gu\u00eda aprender\u00e1s a configurar un servidor Debian 13 para ejecutar m\u00faltiples versiones de PHP simult\u00e1neamente, permitiendo que cada sitio web (o incluso carpetas&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/derecho.unap.edu.pe\/mespinoza\/2026\/02\/instalacion-de-multi-php-con-seleccion-por-htaccess-en-debian-13\/\">Seguir leyendo<span class=\"screen-reader-text\">Instalaci\u00f3n de Multi-PHP con selecci\u00f3n por .htaccess en Debian 13<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,7],"tags":[],"class_list":["post-1370","post","type-post","status-publish","format-standard","hentry","category-informatica","category-manuales","entry"],"_links":{"self":[{"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/posts\/1370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/comments?post=1370"}],"version-history":[{"count":1,"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/posts\/1370\/revisions"}],"predecessor-version":[{"id":1371,"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/posts\/1370\/revisions\/1371"}],"wp:attachment":[{"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/media?parent=1370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/categories?post=1370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/derecho.unap.edu.pe\/mespinoza\/wp-json\/wp\/v2\/tags?post=1370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}