我正在製作一個Silex
應用程序,該應用程序從數據庫中獲取隨機圖像,然後將其顯示在網頁上。但試圖顯示圖像時,我仍然收到404 error
。這是我的路由代碼。Silex幫助。任何人都可以解釋爲什麼我在這裏得到一個404錯誤?
<?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錯誤頁面
誰能提供幫助?
你不給被404ing一個URL的一個例子 - 有點相關的問題 - 但這似乎是錯誤的:'assert('height','[0-9] +')'。你在這種模式下有一個尾隨空間。 –
錯誤是指出您沒有用於「GET /」請求的路由器。所以你要求你的根文件('''http:// what.ever.com /''')轉換爲「/」路由。所以你需要給'''app-> get(「/」,function(...){...})添加一個調用;''' – mTorres
當瀏覽器的地址欄中顯示的是什麼完整的URL你看到第一個和第二個截圖的迴應?現在看起來您可能正在使用PhpStorm自己的內置簡單網絡服務器......這並不適合用於爲具有這種動態網址的網站提供服務。如果是這樣 - 在第一個屏幕截圖請求通過您的Silex應用程序,並且因爲您沒有'/'的路由它會產生該錯誤。在第二次請求時,URL可能無法通過網絡服務器的初始路由邏輯......所以它永遠不會到達您的Silex應用程序。更好地使用適當的Apache/nginx來提供網頁 – LazyOne