Zend Framework: The requested URL /mein/Pfad nicht gefunden wurde auf diesem server
Ich bin total neu in Zend Framework.
Schrieb ich ein einfaches web-service, zurück mock XML-Daten mit dem Zend-Framework, mit Modul-Struktur wie diese:
AppName
application
configs
application.ini
modules
default
.....
api
controller
CatalogController.php
view
library
public
.htaccess
index.php
tests
Localhost (windows 7), diese arbeiten sind :
in meiner Produktion-server (linux), bekomme ich die Meldung '404 Datei nicht gefunden" von:
http://107.22.255.126/api/catalog
aber das ist eine Arbeit
Ich es in Amazon Web Services.
Hier ist meine .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Hier ist meine Bewerbung.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
//resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = "default"
resources.modules[] = "api"
resources.layout.layoutPath = APPLICATION_PATH "/layouts"
resources.layout.layout = master
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
Hier ist meine Bootstrap.php
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initRoutes()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$restRoute = new Zend_Rest_Route($front, array(), array('api'));
$router->addRoute('api', $restRoute);
}
}
?>
Hatte ich laufen aus der Idee. Ich vermute, das ist etwas im Zusammenhang mit router in bootstraper, aber finde keine Lösung.
- Wird der Apache-error-log etwas sagen? Bei der Ausführung in der Entwicklung Modus funktioniert Zend zeigt keine Fehler?
- Dies ist das access-log: 113.210.125.93 - - [04/Dec/2011:08:59:44 +0000] "GET /api/Katalog HTTP/1.1" 404 289 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2" das ist der error log: [Sun Dec 04 09:16:35 2011] [error] [client 113.210.125.93] die Datei ist nicht vorhanden: /var/www/html/TestMVC/public/Api
- Kann Sie hier posten specifiaction der Produktion hosting? PHP version, Webserver etd. Wenn Nutztiere server nginx die .htaccess-Datei wird nicht funktionieren. Access log zeigt, dass gab es eine Anfrage für ..öffentliche/Api, aber das sollte public/index.php
- Ah, sieht aus wie die rewrite-Regel ist nicht passiert, dann. Apache ist auf der Suche für die eigentliche Datei, und es ist nicht übermittelt, aus dem router. Versuchen Sie entweder sicherstellen .htaccess aktiviert sind, in diesem Verzeichnis, oder legen Sie einfach die rewrite-Regel in der virtuellen host (oder irgendwo in der apache-config).
- Sie können meine phpInfo() auf 107.22.255.126
- Hatte ich aktiviert .htaccess auf meine httpd.conf ein, und starten Sie den Apache. Immer noch das gleiche.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schließlich, das problem ist, da httpd.conf deaktivieren .htaccess auf das Verzeichnis. Ich AllowOverride All Hinzugefügt, um es unter VirtualHost, und es funktioniert.
wie diese:
Kredit @Corbin in der Frage Kommentar.
Ich hatte diese Art von problem auf Ubuntu.
Ich ging zu apache2.conf und legen Sie ein Verzeichnis wie folgt:
Der wichtigste Punkt ist: AllowOverride All
Denken Sie daran, Ihre apache-Konfiguration:
sudo a2enmod rewrite
Dann sollte es funktionieren.
yeap Lösungen:: http://www.phpcloud.com/help/adding-rewrite-rules-to-your-application
In Schritt 3, den ich nicht erwähnt habe, aber wir hatten nicht kopieren Sie die Standard-Elefant .htaccess-Datei in unserem öffentlichen Ordner. Stattdessen verwenden wir die von Zend in der PHPCloud Dokumentation. Erstellen Sie eine öffentliche/.htaccess-Datei mit folgendem Inhalt: