Die Website meines Kunden läuft derzeit auf einem Apache-Server mit mod_php. Die Routen aller Anwendungen sind in der .htaccess-Datei definiert (siehe Code unten). Jetzt versucht er auf einen Server mit apache und php-fastcgi zu migrieren, aber die Routen funktionieren nicht mehr.
%Vor% Wenn ich auf Ссылка zugreife, bekomme ich No input file specified
und im Apache error_log [fcgid:warn] mod_fcgid: stderr: PHP Warning: Unknown: function '1' not found or invalid function name in Unknown on line 0
, aber wenn ich direkt auf die Route zugreife Ссылка funktioniert es gut.
AKTUALISIEREN
Ich habe eine funktionierende Lösung gefunden, die etwas vom Framework-Verhalten verändert hat. Wenn jemand eine Lösung hat, ohne das Framework zu ändern (wahrscheinlich in der Apache- oder PHP-Konfiguration), werde ich die Antwort gadlich auf das Kopfgeld übertragen.
Wie von @ user3584460 bestätigt, habe ich beschlossen, alle meine Routen zu ändern, um den gewünschten Controller / Aktion als Querystring-Parameter zu übergeben. Hier, wie es gemacht wurde.
Ich habe alle Routen geändert, um einen _url-Parameter zu übergeben:
%Vor%Auf diese Weise würde ich nicht den Fehler "Keine Eingabedatei angegeben" erhalten, aber das Framework (zend) würde die Route nicht erkennen und würde immer die Startseite anzeigen.
Der Routen-Dispatcher hat erwartet, dass die Variable $requestUri
im Format index.php/module/controller/action
ist, aber mit der Änderung in .htaccess
war es index.php?_url=/module/controller/action
. Daher musste ich einige Änderungen in der Klasse Zend_Controller_Request_Http
vornehmen, damit die Konvertierung durchgeführt werden konnte.
Also habe ich der Methode setRequestUri
folgende Zeilen hinzugefügt:
Jetzt funktioniert es gut.
Manchmal sehen wir dies auf Websites, die Umschreibungen verwenden. Wir haben das behoben, indem wir das Neuschreiben geändert haben. Die alte Zeile wäre etwas wie:
%Vor%Wir haben es in:
geändert %Vor%Dies hat das Problem behoben.