Silex帮助。任何人都可以解释为什么我在这里收到404错误?

时间:2017-04-18 04:02:10

标签: php url routes phpstorm silex

我正在制作一个Silex应用程序,它从数据库中获取随机图像,然后将其显示在网页上。但是在尝试显示图像时我一直得到404 error。这是我的路线代码。

<?php

use Symfony\Component\HttpFoundation\{Request, Response};

$app->get('/{width}/{height}', function (Request $request, Silex\Application $app, $width, $height){

    $image = $app['db']->fetchAssoc("SELECT filename FROM images ORDER BY rand() LIMIT 1");

    $placeholder = $app['image']
        ->make(__DIR__.'/../public/img/' .$image['filename'])
    ->fit($width, $height)
    ->greyscale()
    ->response('png');


    return new Response($placeholder, 200,[
        'Content-Type' => 'image/png'
    ]);


})->assert('width', '[0-9]+')->assert('height', '[0-9]+ ');

因为我写的路线有宽度和高度,我需要在我的网址后面加上宽度和高度,我不会收到这些错误。

Errors page

但是一旦我确实添加了高度,就说400和400,我得到一个404错误页面

404 Page

有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

由于您的404来自nginx而不是来自silex,我假设您忘记在您的网络服务器上启用网址重写(在您的情况下是nginx)

我也看到,此代码段来自https://www.codecourse.com/lessons/build-a-placekitten-clone

作者演示如何在03:36(https://www.codecourse.com/lessons/build-a-placekitten-clone/1482)启用重写 但仅适用于Apache Web服务器,不适用于nginx

有关如何配置nginx的详细信息,请参阅https://silex.sensiolabs.org/doc/2.0/web_servers.html#nginx

<强>更新

我认为你可以测试一下你的图片生成器并看它在use strict; use warnings; use File::Find::Rule; File::Find::Rule->new ->file ->name(qr/\.(php|class)$/) ->exec( \&do_replacement ) ->in('.'); sub do_replacement { my ( $fn, undef, $full_path ) = @_; $^I = '.bak'; # suffix of backup file local @ARGV = ( $fn ); while (<>) { s{<\?php\s*//\s*\$Id:.*?\$}{<?php // \$Id\$}g; print; } } 工作但是为了更清晰的网址,你需要重写