Hallo,
habe auf einem SuSE-Linux 9.1 einen Apache 2.0 und PHP 5.0 laufen. Folgende Konfiguration der "httpd.conf"-Datei:
Code:
ServerName xxx.xxx.xxx.de
ServerAdmin xxx@xxx.de
ServerSignature Off
ServerTokens ProductOnly
UseCanonicalName Off
HostnameLookups Off
Listen 80
LoadModule php5_module /usr/lib/apache2/libphp5.so
LoadModule rewrite_module /usr/lib/apache2-prefork/mod_rewrite.so
LoadModule alias_module /usr/lib/apache2-prefork/mod_alias.so
LoadModule access_module /usr/lib/apache2-prefork/mod_access.so
LoadModule auth_module /usr/lib/apache2-prefork/mod_auth.so
LoadModule env_module /usr/lib/apache2-prefork/mod_env.so
LoadModule log_config_module /usr/lib/apache2-prefork/mod_log_config.so
LoadModule mime_module /usr/lib/apache2-prefork/mod_mime.so
LoadModule mime_magic_module /usr/lib/apache2-prefork/mod_mime_magic.so
KeepAlive On
KeepAliveTimeout 15
#KeepAliveRequests 100
Timeout 300
DocumentRoot /home/httpd/start
<Directory "/home/httpd/start/">
AllowOverride All
Options None
Order allow,deny
Allow from all
</Directory>
AccessFileName .htaccess
User wwwrun
Group www
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
TypesConfig /etc/mime.types
MIMEMagicFile /etc/apache2/magic
DirectoryIndex index.php index.html
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogLevel warn
CustomLog /var/log/apache2/access_log common
ErrorLog /var/log/apache2/error_log
<VirtualHost xxx.xxx.xxx.xxx>
ServerName xxx.xxx.xxx.xxx
ServerAlias xxx.xxx.xxx.xxx
DocumentRoot /home/httpd/vhosts/default/htdocs
<Directory /home/httpd/vhosts/default/htdocs>
AllowOverride All
Options None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
NameVirtualHost xxx.xxx.xxx.xxx
<VirtualHost xxx.xxx.xxx.xxx>
ServerName xxx.de
ServerAlias www.xxx.de
</VirtualHost>
<VirtualHost xxx.xxx.xxx.xxx>
ServerName yyy.de
ServerAlias www.yyy.de
</VirtualHost>
<VirtualHost xxx.xxx.xxx.xxx>
ServerName zzz.de
ServerAlias www.zzz.de
</VirtualHost>
Alle vorhandenen Dateien haben die Berechtigungen (user: wwwrun, group: www, mod: 750).
Das Problem ist folgendes: Ich bekomme von nicht-PHP-Anfragen (Bilder, HTML-Dateien etc.) einen 206-Code (Partial Content) zurück, d.h. also die Anfrage wurde ordnungsgemäß vom Server ausgeführt, allerdings eben nur teilweise. Das steht bei mir so in der Access-Log-Datei und konnte ich auch mit ethereal nachprüfen - wurde daraus aber immer noch nicht schlauer. Warum also schickt er die Anfrage an den Client nur teilweise rüber, wo doch die Browser nicht wirklich eine Resume-Anfrage schicken oder nicht schicken sollten?!?!
Ethereal spuckt mir folgende Header für PHP-Anfragen (Bild über PHP) zurück:
GET /bild.gif HTTP/1.1 (Browser)
Code:
Host: www.xxx.de
User-Agent: Mozilla/5.0 ...
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;0=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
HTTP/1.1 200 Okay: (Server)
Code:
Date: ...
Server: Apache...
X-Powered-By: PHP/5.0...
Expires: ...
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 2289
Content-Description: bild.gif
Cache-Controll: public
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/gif; name="bild.gif"
Bei den anderen Anfragen (gleiches Bild ohne PHP geschleust) folgende Headers:
GET /bild2.gif HTTP/1.1: (Browser)
Code:
Host: www.xxx.de
User-Agent: Mozilla/5.0 ...
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Range: bytes=0-
If-Range: "7d800c-8f1-10a18f80"
Cache-Control: max-age=0
HTTP/1.1 206 Partial Content (Server)
Code:
Date: ...
Server: Apache ...
Last-Modified: ...
ETag: "7d800c-8f1-10a18f80"
Accept-Ranges: bytes
Content-Length: 2289
Content-Range: bytes 0-0/2288
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/gif
Nach diesem Header kommt auch kein Data (wohl wegen "Content-Range: bytes 0-0/2288").
Aber warum der Zusatz "Ranges"? Bei beiden Anfragen handelt es sich um gleiche Dateien, die lediglich einmal über PHP geschleust wird (intern) und einmal ohne PHP (durch anderen Dateinamen). Ich verstehe also auch nicht warum der Browser hier schon ein Unterschied erkennen sollte! Ich häng hier also sozusagen in den Seilen und weiß absolut nicht mehr weiter. Vielleicht kann sich das einer hier alles erklären und mir Tipps - vorallem ein Lösung geben.
Vielen Dank auch im voraus.
Schönes sonniges Wochenende wünsch ich Euch!