2017-07-17 5 views
1

Ich richte eine neue Site lokal auf einer Windows-Maschine zum Testen ein. Im Dokumentenstamm, wenn ich eine index.html habe, wird es dem Browser ohne Probleme serviert. Wenn ich es umbenenne index.php, erhält der Browser nichts. Kein Fehler wird serverseitig ausgelöst. Ich versuche zu verstehen, warum.Apache 2.4: PHP-Dateien werden nicht an den Browser gesendet

Vhosts

<VirtualHost *:80> 
    DocumentRoot "C:\websites\learn" 
    ServerName learn.loc 

    LogLevel alert rewrite:trace2 

    #PHP SETTINGS 
    php_value auto_prepend_file "C:\websites\learn\noop.php" 
    php_value open_basedir "C:\websites\learn" 

    <Directory "C:\websites\learn">  
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
    </Directory> 

</VirtualHost> 

Hier ist die .htaccess-Datei, die im Document-Root befindet:

RewriteEngine on 
#point to javascript learning project 
RewriteRule ^js /javascript 
RewriteRule ^js/(.*) /javascript/$1 

Hier ist die mod_rewrite Protokoll generiert, wenn ich learn.loc/javascript laden (dieser Ordner hat eine index.php Datei)

[initial] [perdir C:/websites/learn/] pass through C:/websites/learn/javascript/ 
[subreq] [perdir C:/websites/learn/] pass through C:/websites/learn/javascript/index.html 
[subreq] [perdir C:/websites/learn/] pass through C:/websites/learn/javascript/index.htm 
[subreq] [perdir C:/websites/learn/] pass through C:/websites/learn/javascript/index.php 

Dem Apache- oder PHP-Fehlerprotokoll wird nichts hinzugefügt; Der Browser selbst empfängt status code 200, zusammen mit den folgenden Antwort-Headern

Date:   "..." 
Server:   "Apache/2.4.16 (Win32) PHP/5.6.23" 
X-Powered-By: "PHP/5.6.23" 
Content-Length: "0" 
Keep-Alive:  "timeout=5, max=100" 
Connection:  "Keep-Alive" 
Content-Type: "text/html; charset=UTF-8" 

Antworttext ist eine leere Zeichenfolge. Wie gesagt, wenn ich die Datei in index.html umbenenne, wird der Inhalt (Vanille-HTML-Datei) angezeigt. Was könnte passieren?

Antwort

0

Ich fand es heraus. Das war nur ich sorglos. Das Problem war, mit dieser Linie von Vhosts config:

php_value auto_prepend_file "C:\websites\learn\noop.php" 

Genauer gesagt, was man für ein noop sein war wirklich eine Hinrichtung Killer.

noop.php

<?php 
exit; // <- exits not just this script but all of PHP and returns to the browser 

Sobald ich die zweite Linie entfernt, waren die Dinge wieder in Ordnung. Dies erklärt auch, warum das Umbenennen von index.php zu Dinge funktionierte: Es hat PHP komplett aus der Schleife genommen.

Verwandte Themen