skeleton - slim php
Slim Framework siempre devuelve el error 404 (8)
¡El problema está resuelto!
Mi apache es en realidad normal, y el archivo .htaccess proporcionado anteriormente también es normal.
La clave es la URL que utilicé. Anteriormente, utilicé la URL no válida, por lo que devolvió el error de la página 404. Me di cuenta cuando intenté acceder a la URL GET más nueva a través del navegador con esta;
http://localhost/dev/index.php/getUsers/user1
y ahora eso funciona!
Me di cuenta una vez que encontré estas declaraciones;
Si Slim no encuentra rutas con URI que coincidan con el URI de solicitud HTTP, Slim devolverá automáticamente una respuesta 404 Not Found.
Si Slim encuentra rutas con URI que coinciden con el URI de solicitud HTTP pero no con el método de solicitud HTTP, Slim devolverá automáticamente una respuesta 405 Método no permitido con un encabezado Allow: cuyo valor enumera los métodos HTTP que son aceptables para el recurso solicitado.
Estos días estoy usando Slim Framework como mi herramienta más simple para desarrollar la API de php. Usando estos dos artículos:
Sigo algunos de los pasos desde allí. Descargando Slim Framework, colocando el directorio y los archivos correctos. Ajustar las declaraciones de entrada como;
//1. Require Slim
require(''Slim/Slim.php'');
//2. Instantiate Slim
$app = new Slim();
//3. Define routes
$app->get(''/books'', function ($id) {
//Show book with id = $id
});
Y luego, modifico el resto en consecuencia.
Tal como mi lista de verificación que ya se ha hecho:
- LoadModule rewrite_module modules / mod_rewrite.so -> enabled
- Slim .htaccess:
RewriteEngine On RewriteCond% {REQUEST_FILENAME}! -F RewriteRule ^ (. *) $ Bootstrap.php [QSA, L]
- httpd.conf: (Enlace compartido).
Pero, después de Once, ejecuto esta declaración;
$app->run();
Y lo ejecuto en mi navegador ... luego, recibí el Error 404 mientras lo probaba en mi Localhost. ¿Cuál es la solución para arreglar eso?
FYI, aquí está mi archivo PHP más simple que lo estoy usando actualmente. (Enlace compartido)
Además, el módulo mod_rewrite.so
debe cargarse en httpd.conf
o recibirá el error 500.
LoadModule rewrite_module modules/mod_rewrite.so
Creo que su problema está en el "Analizador de recursos" porque no está definiendo el parámetro $ id en la solicitud, por lo tanto, intente esto:
//1. Require Slim
require(''Slim/Slim.php'');
//2. Instantiate Slim
$app = new Slim();
//3. Define routes
$app->get(''/books/:id/'', function ($id) {
echo json_encode( getBook($id) );
});
// some stuff
$app->run();
Por favor, dinos si está bien
Encontré esta publicación mientras buscaba en Google "slimframework 404". La publicación me llevó a una solución a mi problema.
El problema
Configuré un sitio con el framework Slim usando Composer y creé un index.php con el siguiente código de ejemplo de slimframework.com:
<?php
$app = new /Slim/Slim();
$app->get(''/hello/:name'', function ($name) {
echo "Hello, $name";
});
$app->run();
Luego trato de acceder a la página usando http://localhost/hello/bob
. Devuelvo una página 404 Página no encontrada.
Pude acceder a la página usando http://localhost/index.php/hello/bob
.
La solución
Encontré la solución mirando /vendor/slim/.htaccess
(incluido con la instalación de Composer Slim) y la sección Reescritura de URL de la documentación de Slim Framework.
/vendor/slim/.htaccess
una copia del archivo /vendor/slim/.htaccess
a la misma carpeta que mi archivo index.php. El contenido del archivo es:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Ahora puedo acceder a la página usando http://localhost/hello/bob
.
Está a punto de incluir el index.php en su archivo, pero eso sucede porque no está trabajando correctamente con su modificación de modelo. Consulte el siguiente enlace:
https://github.com/codeguy/Slim
En la parte de Comenzar, puede ver cómo configurar su servidor (en caso de que esté usando apache / lighttpd / ngynx)
Para las personas que aún buscan respuestas porque las anteriores no funcionan, esto funciona para mí:
RewriteBase /<base_of_your_project>/
Para mí, el problema fue que olvidé proporcionar un archivo .htaccess
en la raíz de mi documento.
.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
Si está usando Slim en Ubuntu 16.04 y obtendrá el error 404. Prueba esta prueba de Tod Birdsall arriba:
Si esto funciona
http://localhost/index.php/hello/bob
y esto no funciona
y su archivo .htaccess en el mismo directorio que su index.php y está configurado de la siguiente manera:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Y todavía obtienes el error 404 en Apache.
Intente encender Apache mod_rewrite de la siguiente manera y reinicie Apache:
$ sudo a2enmod reescribir
$ sudo service apache2 restart
La API Slim debería funcionar correctamente ahora, ya que el archivo .htaccess proporcionado solo funcionará si mod_rewrite está habilitado y no es el predeterminado en una instalación limpia.
Aquí es cómo desactivar mod_rewirte si es necesario.
$ sudo a2dismod reescribe
$ sudo service apache2 restart