2013-12-21 23 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