2012-02-16 20 views
18

Decidí habilitar hosts virtuales en mi servidor Apache y decidí hacerlo basado en puertos.Apache Virtual Host no analiza PHP

Lo primero que hice, por supuesto, fue RTM. Seguí las instrucciones found here. Bueno, funcionó, más o menos. En cuanto al servidor virtual en ejecución, lo hace. El contenido extraído de: 80 es diferente de: 8080.

Pero PHP no funciona. El "sitio original", (puerto 80) ejecuta PHP simplemente genial. El sitio del puerto 8080, sin embargo, envía el PHP al navegador. No veo nada en el navegador, pero el código fuente Muestra:

<?php 
echo "It worked!"; 
?> 

Este tema parece estar muy libremente documentado en unos pocos sitios web, pero o bien no puedo encontrar una solución en ellos, o la solución que aparece ISN no funciona para mí

Una vez más, el servidor virtual en sí funciona correctamente. PHP, por otro lado, no lo es.

¿Alguna idea de lo que podría ser? ¿Qué contenido de mi archivo httpd.conf debo proporcionar para que no explote mi pregunta copiando/pegando todo?

(Lo siento, se olvidó de publicar que tenía estos en su lugar, Phil Agregando a evitar más confusiones.)

Listen 80 
Listen 8080 

NameVirtualHost *:80 
NameVirtualHost *:8080 

<VirtualHost *:80> 
    ServerName mysite.com 
    DocumentRoot /var/www/vhosts/Site1/httpdocs 
</VirtualHost> 

<VirtualHost *:8080> 
    ServerName mysite.com 
    DocumentRoot /var/www/vhosts/Site2/httpdocs 
</VirtualHost> 

He intentado añadir esta dentro de las etiquetas:

AddHandler php5-script .php 
AddType text/html .php 

... pero fue en vano.

+0

¿que os ejecutando en? ¿Puede mostrarnos sus archivos de configuración para php/apache vhost? – Erik

+0

OS es CentOS 5.5. En cuanto a los archivos de configuración, no tengo archivos .htaccess en su lugar, por lo que los únicos archivos de configuración que gobiernan (creo) son los archivos httpd.conf y php.ini. ¿Hay algún archivo particular aparte de estos debería estar mirando? ¿Qué parámetros de configuración hay dentro de ellos? Creo que mis líneas VirtualHost están bien porque los diferentes puertos ofrecen contenido diferente, pero PHP no funciona, así que podría estar bastante equivocado al respecto. – user1075581

+0

Debería tener un archivo 'something.vhost' en su carpeta' sites-available' '/ etc/apache2/sites-available /' ¿tiene un archivo vhost específico para cada puerto o tiene un solo archivo de configuración? Si solo tiene un solo archivo, por ejemplo: 'default' o tal vez solo use' httpd.confg' publicar lo que dice a continuación '' – Erik

Respuesta

15

Esto finalmente me puso en el camino correcto:

http://www.linuxquestions.org/questions/linux-server-73/php-not-working-on-one-vhost-but-works-on-all-others-851093/

Aquí está la solución:

En la sección <Directory>, incluí estas líneas:

<IfModule sapi_apache2.c> 
    php_admin_flag engine on 
</IfModule> 
<IfModule mod_php5.c> 
    php_admin_flag engine on 
</IfModule> 

O bien, un copiar/pegar redactado de la solución en mi servidor:

<Directory "/var/www/vhosts/A2/httpdocs"> 
    <IfModule sapi_apache2.c> 
     php_admin_flag engine on 
    </IfModule> 
    <IfModule mod_php5.c> 
     php_admin_flag engine on 
    </IfModule> 

    (Other configuration parameters) 

</Directory> 
+1

Yo también tuve que incluir 'php_admin_flag engine on' porque el panel PLESK de alguna manera lo deshabilitó en cada nuevo vhost. – codepushr

+0

¿Cómo adaptarlo a php7? – maxagaz

1

Voy a tener que cargar una máquina virtual centos para comprobar la configuración del Apache, pero en ubuntu tengo mucha más información en mi config del Virtualhost

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin"> 
      AllowOverride None 
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
      Order allow,deny 
      Allow from all 
    </Directory> 
22

Esto también podría ser debido a los archivos PHP usando etiquetas corta php <? en lugar de <?php. Por defecto, las etiquetas cortas no están habilitadas en el archivo de configuración php.ini.

+0

Parece que esas etiquetas podrían habilitarse. ¿Si sí donde? –

+0

¡Oh hombre! Este fue totalmente mi problema! Puede habilitarlos estableciendo la configuración 'short_open_tag' php.ini en' On'. –

1

Asegúrese de que la siguiente línea que carga el módulo de PHP no está comentada -

LoadModule php5_module libexec/apache2/libphp5.so 
1

En mi caso fue una configuración predeterminada en php.conf. Dice:

# Running PHP scripts in user directories is disabled by default 

Compruebe su php.conf (para PHP 7.1 es consecuencia /etc/apache2/mods-enabled/php7.1.conf) y comentar las líneas mencionadas:

[email protected]:/home/pxxx/public_html# vi /etc/apache2/mods-enabled/php5.conf 
    # To re-enable PHP in user directories comment the following lines 
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it 
    # prevents .htaccess files from disabling it. 
     <IfModule mod_userdir.c> 
     <Directory /home/*/public_html> 
      ***php_admin_flag engine On*** -> Turn this option ON 
     </Directory> 
    </IfModule> 
+0

Explica un poco más cómo esto resuelve el problema. –

1

para la configuración de mi he tenido que añadir esta línea al host virtual (dentro <Directory>):

AddType application/x-httpd-php .php 
+0

para aquellos que quieren incrustar el código php en.El archivo html puede hacer 'AddType application/x-httpd-php .php .html .htm' –

0

esto ayudó my out a2enmod php5, si el módulo no existe reinstale lamp-server escribiendo apt-get install lamp-server^

4

En mi caso, el problema se corrigió ejecutando apt-get install libapache2-mod-php.

1

la única cosa que me ayudó después de todo intentó añadir apache2.conf Apache

<FilesMatch \.php$> 
    SetHandler application/x-httpd-php 
</FilesMatch> 
Cuestiones relacionadas