2013-12-21 53 views
1

普通的PHP文件500內部服務器錯誤:exif_imagetype對URL損壞給出笨

<?php 

$test = exif_imagetype('http://www.example.com/some_broken_link.jpeg'); 

var_dump($test); 

?> 

結果:

bool(false) 

笨控制器:

class test extends CI_Controller { 

    function index() { 

     $test = exif_imagetype('http://www.example.com/some_broken_link.jpeg'); 

     $data = array(

      'test' => $test 

     ); 

     $this->load->view('test', $data); 

    } 

}; 

做在一個var_dump($test)意見檔案

HTTP Error 500 Internal server error 

現在,當我將'some_broken_link.jpeg'替換爲'some_working_link.jpeg'時,常規php文件 Codeigniter視圖文件顯示int(2)。

PHP錯誤是打開的,檢查Apache/PHP的日誌,但沒有顯示的。當我使用斷開的鏈接時,Codeigniter上只有500個Int錯誤。

任何人都知道發生了什麼事?我需要代碼點火器中的bool(false)。

+0

將其包裝在「try catch」塊中? –

+0

或者只是一個簡單的'if' /'else'條件? 500錯誤來自Codeigniter本身中的應用程序中斷。所以如果'$ test'是'false',那麼只需要對'if'做出反應,然後做點什麼或者什麼都不做。 – JakeGould

+0

與try catch相同的結果,在斷開的鏈接上爲500,工作鏈接上爲int(2)。 – Pietjepuk

回答

0

HTTP Error 500 Internal server error來自Apache窒息從Codeigniter鏈到PHP的鏈中的東西。 Meaing如果鏈接被破壞,你期望Codeigniter能做什麼:$this->load->view('test', $data);?這個調用本身就是導致500錯誤的原因。不是100%清楚的問題是從您的設置,但我的直覺是像這樣的代碼來代替:

class test extends CI_Controller { 

    function index() { 

     $test = exif_imagetype('http://www.example.com/some_broken_link.jpeg'); 

     if (!empty($test)) { 

      $data = array(
       'test' => $test 
      ); 

      $this->load->view('test', $data); 
     } 

    } 

}; 

只要將有條件if爲$測試從exif_imagetype要求對bool(false)bool(true)工作。

+0

試過以下內容:if(empty($ test)){$ test ='broken'; };並且如果($ test == false),但所有似乎都會產生一個500 Int錯誤。除了'普通'的PHP版本。那一個var_dump的bool(false)。 – Pietjepuk

+0

您是否嘗試過我所做的:'if(!empty($ test)){'另外,PHP日誌說什麼?或者你在apache日誌中看到什麼?它應該完全告訴你在什麼文件中以及在哪一行上問題是什麼。 – JakeGould