我正在制作一个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]+ ');
因为我写的路线有宽度和高度,我需要在我的网址后面加上宽度和高度,我不会收到这些错误。
但是一旦我确实添加了高度,就说400和400,我得到一个404错误页面
有人可以提供帮助吗?
答案 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;
}
}
工作但是为了更清晰的网址,你需要重写