2012-02-16 16 views
18

Postanowiłem włączyć hosty wirtualne na moim serwerze Apache i zdecydować, aby był oparty na portach.Serwer wirtualny Apache nie parsuje PHP

Pierwszą rzeczą, którą zrobiłem, był oczywiście RTM. Postępowałem zgodnie z instrukcjami: found here. Cóż, zadziałało - trochę. O ile działa wirtualny host, robi to. Zawartość wyciągnięta z: 80 różni się od: 8080.

Ale PHP nie działa. "Oryginalna strona" (port 80) działa świetnie. Strona portu 8080 wysyła jednak PHP do przeglądarki. Nie widzę nic w przeglądarce, ale kod źródłowy wskazuje:

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

ten temat wydaje się być bardzo luźno udokumentowane na kilku stronach internetowych, ale też nie mogę znaleźć rozwiązanie w nich, lub roztwór wymienione ISN pracuje dla mnie.

Znowu sam wirtualny host działa poprawnie. Z drugiej strony PHP nie jest.

Wszelkie pomysły na temat tego, co może być? Jakie treści z mojego pliku httpd.conf powinienem podać, aby nie wysadzić mojego pytania przez skopiowanie/wklejenie całej rzeczy?

(przepraszam zapomniałem odpowiedzieć, że miałem je w miejscu, Phil Dodawanie aby uniknąć dalszych nieporozumień.)

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> 

Próbowałem dodając ten wewnątrz znaczników:

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

... ale bez skutku.

+0

Co OS są uruchomione na Apache? Czy możesz pokazać nam swoje pliki konfiguracyjne dla php/apache vhost? – Erik

+0

OS to CentOS 5.5. Jeśli chodzi o pliki konfiguracyjne, nie mam żadnych plików .htaccess, więc jedynymi zarządzającymi plikami konfiguracyjnymi (jak sądzę) są pliki httpd.conf i php.ini. Czy są jakieś konkretne pliki poza tymi, które powinienem oglądać? Jakie parametry konfiguracyjne w nich zawarte? Myślę, że moje linie VirtualHost są w porządku, ponieważ różne porty obsługują różne treści, ale PHP nie działa - więc mogłem bardzo się mylić. – user1075581

+0

Powinieneś mieć pliki 'something.vhost' w folderze' sites-available' '/ etc/apache2/sites-available /' czy masz konkretny plik vhost dla każdego portu lub czy posiadasz jeden plik konfiguracyjny? Jeśli masz tylko jeden plik, np .: 'default' lub możesz użyć tylko' httpd.confg' post, co jest napisane poniżej '' – Erik

Odpowiedz

15

To wreszcie położył mnie na właściwą drogę:

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

Oto rozwiązanie:

W sekcji <Directory>, włączyłem te linie:

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

Albo redacted kopiuj/wklej z roztworu na moim serwerze:

<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

Ja też musiałem włączyć 'engine silnika php_admin 'on, ponieważ panel PLESK w jakiś sposób wyłączał go na każdym nowym vhost. – codepushr

+0

Jak dostosować go do php7? – maxagaz

1

będę musiał ładować VM CentOS sprawdzić conf apache ale na ubuntu mam dużo więcej informacji w moim config pod 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

Może to być również spowodowane plików PHP przy użyciu tagów krótki php <? zamiast <?php. Domyślnie krótkie znaczniki nie są włączone w pliku konfiguracyjnym php.ini.

+0

Wygląda na to, że te tagi można włączyć. Jeśli tak, gdzie? –

+0

Och, człowieku! To był całkowicie mój problem! Możesz je włączyć, ustawiając ustawienie 'short_open_tag' php.ini na' On'. –

1

Upewnij się następujący wiersz który ładuje moduł php nie jest wykomentowane -

LoadModule php5_module libexec/apache2/libphp5.so 
1

W moim przypadku było to ustawienie domyślne w php.conf. Mówi:

# Running PHP scripts in user directories is disabled by default 

Sprawdź php.conf (dla PHP 7.1 to odpowiednio /etc/apache2/mods-enabled/php7.1.conf) i skomentować wspomniane linie:

[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

Proszę wyjaśnić nieco więcej, jak to rozwiązuje problem. –

1

dla mojej konfiguracji musiałem dodać tę linię do wirtualnego hosta (wewnątrz <Directory>):

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

dla tych, którzy chcą osadzić kod php w.Plik html może zrobić "AddType application/x-httpd-php .php .html .htm" –

0

pomogło mój out a2enmod php5, jeśli moduł nie istnieje, ponownie zainstaluj serwer lamp, wpisując: apt-get install lamp-server^

4

W moim przypadku problem został rozwiązany przez uruchomienie apt-get install libapache2-mod-php.

1

jedyną rzeczą, która pomogła mi mimo wszystko spróbował dodać apache2.conf

<FilesMatch \.php$> 
    SetHandler application/x-httpd-php 
</FilesMatch> 
Powiązane problemy