Shopkopie/500 Internal Server Error

Hallo,

wir haben einen Oxid-Shop der super läuft. Jetzt wollten wir diesen Shop in einem Unterverzeichnis kopieren mit einer Datenbankkopie (Testshop)
Allerdings bekomme ich nur eine weiße Seite und in der Netzwerkanalyse steht die Meldung "500 Internal Server Error"
config.ini.php und .htacces (RewriteBase) ist angepasst. Ich vermute dass es an der .htaccess-Datei liegt.

Hier ist die .htaccess Datei im Hauptverzeichnis:

# In case you want to add a .htpasswd authentification
#AuthName "Authentifizierung"
#AuthType Basic
#AuthUserFile /home/lanfurpl/www.lanamo.de/.htpasswd
#require valid-user

# Liste der Dateiendungen die als PHP5.4 verarbeitet werden sollen
AddHandler php-fastcgi5.4 .php .phtml

RewriteEngine on
# forward to www
RewriteBase /

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# you'll have to add the host of the shop as an allowed entity,
# so that calls from the host skip the authentification
# Example:
# Order Deny,Allow
# Deny from All
# AuthType Basic
# AuthName "Access not allowed"
# AuthUserFile path_to_htpasswd_file/.htpasswd
# Require valid-user
# Allow from localhost
# Satisfy Any

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /



    RewriteCond %{REQUEST_URI}     config\.inc\.php [NC]
    RewriteRule ^config\.inc\.php  index\.php       [R=301,L]

    RewriteCond %{QUERY_STRING}     fnc=(getShopVersion|getShopEdition|getRevision) [NC]
    RewriteRule ^(.*)$              $1?                                             [R=301,L]

    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]

    RewriteCond %{REQUEST_URI} oxseo\.php$
    RewriteCond %{QUERY_STRING} mod_rewrite_module_is=off
    RewriteRule oxseo\.php$ oxseo.php?mod_rewrite_module_is=on [L]

    RewriteCond %{REQUEST_URI} !(\/admin\/|\/core\/|\/application\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule !(\.html|\/|\.jpg|\.css|\.pdf|\.doc|\.gif|\.png|\.js|\.htc|\.svg)$ %{REQUEST_URI}/ [R=301,L]

    RewriteCond %{REQUEST_URI} !(\/admin\/|\/core\/|\/application\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (\.html|\/)$ oxseo.php


    RewriteCond %{REQUEST_URI} (\/out\/pictures\/generated\/)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (\.jpe?g|\.gif|\.png|\.svg)$ getimg.php

</IfModule>

# disabling log file access from outside
<FilesMatch "(EXCEPTION_LOG\.txt|\.log|\.tpl|pkg\.rev|\.ini|pkg\.info|\.pem)$">
    order allow,deny
    deny from all
</FilesMatch>

# Prevent .ht* files from being sended to outside requests
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

Options -Indexes
DirectoryIndex index.php index.html

Und hier die .htaccess-Datei im Unterverzeichnis “Shop2” in der der Testshop liegt:

# In case you want to add a .htpasswd authentification
# you'll have to add the host of the shop as an allowed entity,
# so that calls from the host skip the authentification
# Example:
# Order Deny,Allow
# Deny from All
# AuthType Basic
# AuthName "Access not allowed"
# AuthUserFile path_to_htpasswd_file/.htpasswd
# Require valid-user
# Allow from localhost
# Satisfy Any

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /Shop2

    RewriteCond %{REQUEST_URI}     config\.inc\.php [NC]
    RewriteRule ^config\.inc\.php  index\.php       [R=301,L]

    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]

    RewriteCond %{REQUEST_URI} oxseo\.php$
    RewriteCond %{QUERY_STRING} mod_rewrite_module_is=off
    RewriteRule oxseo\.php$ oxseo.php?mod_rewrite_module_is=on [L]

    RewriteCond %{REQUEST_URI} !(\/admin\/|\/core\/|\/application\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule !(\.html|\/|\.jpg|\.css|\.pdf|\.doc|\.gif|\.png|\.js|\.htc|\.svg)$ %{REQUEST_URI}/ [R=301,L]

    RewriteCond %{REQUEST_URI} !(\/admin\/|\/core\/|\/application\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (\.html|\/)$ oxseo.php


    RewriteCond %{REQUEST_URI} (\/out\/pictures\/generated\/)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (\.jpe?g|\.gif|\.png|\.svg)$ getimg.php

    RewriteRule ^(vendor/) - [F,L,NC]
</IfModule>

# disabling log file access from outside
<FilesMatch "(EXCEPTION_LOG\.txt|\.log|\.tpl|pkg\.rev|\.ini|pkg\.info|\.pem|composer\.json|composer\.lock|test_config\.yml)$">
    order allow,deny
    deny from all
</FilesMatch>

# Prevent .ht* files from being sended to outside requests
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

Options -Indexes
DirectoryIndex index.php index.html

Woran könnte es liegen? Habt ihr eine Idee?

Ich vermute mal, dass der Pfad zu htpassword Datei nicht mehr stimmt.
Schau mal in den Webserver Error log, da müsste die genaue Fehlermeldung drin stehen

Leider steht in den Logs nichts drin. Ich hatte auch mit dem Hoster gesprochen und er sagte auch dass in den Logs nichts drin steht
Es gibt in beiden Verzeichnisse .htpasswd. Ich habe testweise beide gelöscht aber hilft auch nicht. Ich habe in beiden Verzeichnissen die wieder kopiert.

stimmt, auf dem Smartphone sah es gerade noch ganz anders aus :smiley:

jetzt sehe ich das aber. ihr seid bei Profihorst, oder?
in der zweiten htaccess fehlt:

 AddHandler php-fastcgi5.4 .php .phtml 

Ja der Shop ist bei Profihost.
Ich hab den Code eingefügt aber hat leider nicht geklappt

Lösch doch mal testweise

Options +FollowSymLinks

aus der htaccess

Ich habe es in einmal in dem Testshop gelöscht und dann in beiden. Klappt immer noch nicht.

trenn die beiden Shops mal komplett also nicht deinedomain.de/testshop, sondern mach eine Subdomain testshop.deinedomain.de dann musst Du auch keine Pfade in der .htaccess anpassen.

Also ich muss bei mir noch zusätzlich zu


# Options +FollowSymLinks


# Options -Indexes

auskommentieren…Aber ansonsten bin ich nun auch keine Hilfe mehr, sorry.

Das Unterverzeichnis heisst auch tatsächlich Shop2 - also mit einem grossen S? Wenn nicht, läuft das RewriteBase in’s leere - UNIX … Groß-/Kleinschreibung :slight_smile:

Das Unterverzeichnis ist wirklich Shop2 (S grossgeschrieben)
Außerdem habe auch "# Options -Indexes " entfernt.
Hat leider auch nicht geholfen.
Mit der Subdomaine müsste ich probieren aber kann es an noch etwas liegen?

Wenn bei einem Fehler 500 nichts im Error Log steht, ist da meiner Einschätzung nach insgesamt was im Argen. Der Statuscode 500 bedeutet nur “Internal Server Error”, ohne weitere Informationen, was genau schief gegangen ist. Diese weiteren Informationen sollten eigentlich im Error Log stehen.

Meine Empfehlung wäre also, ggf. mit Unterstützung Deines Hosting-Anbieters erst dieses Problem zu lösen. Entweder hat das Problem mit der Shopkopie die gleiche Ursache und ist dann ebenfalls gelöst, oder Du hast dann im Error Log einen Ansatzpunkt, wo es hakt. So ist das mMn fröhliches Rätselraten und nicht sonderlich effektiv :wink:

Wieso keine Meldungen ins Error Log geschrieben werden, können wir von hier aus aber auch nur raten, weil wir das genaue Setup des Serverplatzes nicht kennen.

Bis dann,

Henning

Ja verstehe ich. Ich komme auch nicht weiter. Dann muss ich erstmal auf die Antwort vom Hoster warten. Wenn wir die Lösung gefunden haben, werde ich es posten (für die Vollständigkeit)

Danke für eure Hilfen und Mühe

Lege zuerst eine test.php im Shop2 Ordner mit diesem Inhalt an:

<?php phpinfo(); ?>

und versuch sie im Browser direkt aufzurufen.
Klappts?

Wenn nicht, ist das Problem vermutlich in der htaccess oder Serverconfig (php Version o.ä.)
Versuch mal die .htaccess Datei zu entfernen oder umzubenennen und dann nochmal die test.php aufzurufen.

Wenns immer noch nicht klappt, müsstest du der Sache mit den Logs nachgehen.
Bei Profihorst sind die Webserver-Fehlermeldungen standardmäßig deaktiviert, meine ich.
Einstellen kannst du es entweder über die php.ini oder index.php / config.inc.php Datei.
Ich hab das hier in jedem unserer Shops bei Profihorst drin:

ini_set('display_errors',0);
ini_set('error_log',dirname(__FILE__).'/error.log');
ini_set('log_errors',1);

Füge da mal in die index.php dire nach <?php ein und lade die Seite neu (ohne /test.php)

[QUOTE=vanilla thunder;178315]Bei Profihorst sind die Webserver-Fehlermeldungen standardmäßig deaktiviert, meine ich.[/QUOTE]Aha? Da würde ich zumindest einen Hoster aber beißen, wenn der mir sozusagen meine Arbeitsmittel zur Fehlersuche standardmäßig vorenthält. Aber das nur am Rande :wink:

Bis dann,

Henning

ah, das ist noch das geringste Problem mit diesem Hoster :smiley:

Legt ein 500er überhaupt was ab im log? Also ich meine was wirklich sinnvolles?

Wenn der Webserver halbwegs vernünftig konfiguriert ist, landet dann eine Fehlermeldung z. B. von PHP im Error Log. Die muss man dann natürlich “lesen können”, sprich auswerten und verstehen.

Bis dann,

Henning

Danke für eure Hilfe. Die Lösung war einfacher als gedacht bzw. ist recht peinlich:
Ich habe die Daten nicht binär übertragen und damit bekam ein Modul Probleme. Aber keine Fehlerlogs … naja.
Es läuft.