복붙노트

어떻게 PHP에서 file_get_contents () 함수의 경고를 처리 할 수 ​​있습니까?

PHP

어떻게 PHP에서 file_get_contents () 함수의 경고를 처리 할 수 ​​있습니까?

나는 이런 PHP 코드를 썼다.

$site="http://www.google.com";
$content = file_get_content($site);
echo $content;

하지만 $ site에서 "http : //"를 제거하면 다음 경고 메시지가 나타납니다.

나는 시도하고 붙잡는 것을 시도했다 그러나 작동하지 않았다.

해결법

  1. ==============================

    1.1 단계 : 반환 코드를 확인하십시오 : if ($ content === FALSE) {// 여기에서 오류를 처리하십시오.}

    1 단계 : 반환 코드를 확인하십시오 : if ($ content === FALSE) {// 여기에서 오류를 처리하십시오.}

    2 단계 : 오류 제어 연산자 (즉 @)를 file_get_contents ()에 대한 호출 앞에 두어 경고를 표시하지 않습니다. $ content = @file_get_contents ($ site);

  2. ==============================

    2.오류 처리기를 예외를 호출하고 해당 예외에 대한 try / catch를 사용하는 익명의 함수로 설정할 수도 있습니다.

    오류 처리기를 예외를 호출하고 해당 예외에 대한 try / catch를 사용하는 익명의 함수로 설정할 수도 있습니다.

    set_error_handler(
        create_function(
            '$severity, $message, $file, $line',
            'throw new ErrorException($message, $severity, $severity, $file, $line);'
        )
    );
    
    try {
        file_get_contents('www.google.com');
    }
    catch (Exception $e) {
        echo $e->getMessage();
    }
    
    restore_error_handler();
    

    하나의 작은 오류를 잡기 위해 많은 코드가 필요하지만 앱 전체에서 예외를 사용하는 경우 상단 (예 : 포함 된 설정 파일)에서 한 번만 수행하면됩니다. 모든 오류를 예외 전체로 변환하십시오.

  3. ==============================

    3.이 작업을 수행하는 가장 좋은 방법은 매우 간단합니다.

    이 작업을 수행하는 가장 좋은 방법은 매우 간단합니다.

    if (!$data = file_get_contents("http://www.google.com")) {
          $error = error_get_last();
          echo "HTTP request failed. Error was: " . $error['message'];
    } else {
          echo "Everything went better than expected";
    }
    

    위의 @enobrev에서 try / catch를 시도한 후에이 코드를 찾았지만 길지 않은 (그리고 IMO, 더 읽기 쉬운) 코드를 사용할 수 있습니다. 우리는 단순히 error_get_last를 사용하여 마지막 오류의 텍스트를 가져오고 file_get_contents는 실패시 false를 반환하므로 간단한 "if"가이를 catch 할 수 있습니다.

  4. ==============================

    4.앞에 @를 추가 할 수 있습니다 : $ content = @file_get_contents ($ site);

    앞에 @를 추가 할 수 있습니다 : $ content = @file_get_contents ($ site);

    이렇게하면 모든 경고가 억제됩니다. 오류 제어 연산자를 참조하십시오.

    편집 : 'http : //'를 삭제하면 더 이상 웹 페이지가 아니라 디스크의 'www.google .....'파일을 찾습니다.

  5. ==============================

    5.한 가지 대안은 오류를 억제하고 나중에 catch 할 수있는 예외를 throw하는 것입니다. 이것은 코드를 file_get_contents ()에 여러 번 호출하는 경우에 특히 유용합니다. 왜냐하면 수동으로 모든 것을 억 제하고 처리 할 필요가 없기 때문입니다. 대신 하나의 try / catch 블록에서이 함수에 대해 여러 호출을 수행 할 수 있습니다.

    한 가지 대안은 오류를 억제하고 나중에 catch 할 수있는 예외를 throw하는 것입니다. 이것은 코드를 file_get_contents ()에 여러 번 호출하는 경우에 특히 유용합니다. 왜냐하면 수동으로 모든 것을 억 제하고 처리 할 필요가 없기 때문입니다. 대신 하나의 try / catch 블록에서이 함수에 대해 여러 호출을 수행 할 수 있습니다.

    // Returns the contents of a file
    function file_contents($path) {
        $str = @file_get_contents($path);
        if ($str === FALSE) {
            throw new Exception("Cannot access '$path' to read contents.");
        } else {
            return $str;
        }
    }
    
    // Example
    try {
        file_contents("a");
        file_contents("b");
        file_contents("c");
    } catch (Exception $e) {
        // Deal with it.
        echo "Error: " , $e->getMessage();
    }
    
  6. ==============================

    6.여기 내가 어떻게 해냈는지 ... try-catch block을 필요로하지 않는다 ... 가장 좋은 해결책은 항상 가장 단순하다 ... Enjoy!

    여기 내가 어떻게 해냈는지 ... try-catch block을 필요로하지 않는다 ... 가장 좋은 해결책은 항상 가장 단순하다 ... Enjoy!

    $content = @file_get_contents("http://www.google.com");
    if (strpos($http_response_header[0], "200")) { 
       echo "SUCCESS";
    } else { 
       echo "FAILED";
    } 
    
  7. ==============================

    7.

    function custom_file_get_contents($url) {
        return file_get_contents(
            $url,
            false,
            stream_context_create(
                array(
                    'http' => array(
                        'ignore_errors' => true
                    )
                )
            )
        );
    }
    
    $content=FALSE;
    
    if($content=custom_file_get_contents($url)) {
        //play with the result
    } else {
        //handle the error
    }
    
  8. ==============================

    8.다음은 그 문제를 다루는 방법입니다.

    다음은 그 문제를 다루는 방법입니다.

    $this->response_body = @file_get_contents($this->url, false, $context);
    if ($this->response_body === false) {
        $error = error_get_last();
        $error = explode(': ', $error['message']);
        $error = trim($error[2]) . PHP_EOL;
        fprintf(STDERR, 'Error: '. $error);
        die();
    }
    
  9. ==============================

    9.가장 좋은 방법은 파일에 기록하거나 중요한 메일을 전자 메일로 보내는 것처럼 유용한 작업을 수행 할 자체 오류 및 예외 처리기를 설정하는 것입니다. http://www.php.net/set_error_handler

    가장 좋은 방법은 파일에 기록하거나 중요한 메일을 전자 메일로 보내는 것처럼 유용한 작업을 수행 할 자체 오류 및 예외 처리기를 설정하는 것입니다. http://www.php.net/set_error_handler

  10. ==============================

    10.이 스크립트를 사용할 수 있습니다.

    이 스크립트를 사용할 수 있습니다.

    $url = @file_get_contents("http://www.itreb.info");
    if ($url) {
        // if url is true execute this 
        echo $url;
    } else {
        // if not exceute this 
        echo "connection error";
    }
    
  11. ==============================

    11.PHP 4는 error_reporting ()을 사용하기 때문에 :

    PHP 4는 error_reporting ()을 사용하기 때문에 :

    $site="http://www.google.com";
    $old_error_reporting = error_reporting(E_ALL ^ E_WARNING);
    $content = file_get_content($site);
    error_reporting($old_error_reporting);
    if ($content === FALSE) {
        echo "Error getting '$site'";
    } else {
        echo $content;
    }
    
  12. ==============================

    12.이렇게하면 데이터를 가져 오려고 시도합니다. 작동하지 않으면 오류를 catch하여 catch 내에서 필요한 작업을 수행 할 수 있습니다.

    이렇게하면 데이터를 가져 오려고 시도합니다. 작동하지 않으면 오류를 catch하여 catch 내에서 필요한 작업을 수행 할 수 있습니다.

    try {
        $content = file_get_contents($site);
    } catch(\Exception $e) {
        return 'The file was not found';
    }
    
  13. ==============================

    13.여기에 엄청난 해답이 있지만 아무 것도 제대로 작동하지 않습니다. @로 file_get_contents를 숨기면 일부 사용자가 주장한 것처럼 NULL이 표시되고 false가 표시되지 않습니다. 그래서 당신은 이것을해야합니다 :

    여기에 엄청난 해답이 있지만 아무 것도 제대로 작동하지 않습니다. @로 file_get_contents를 숨기면 일부 사용자가 주장한 것처럼 NULL이 표시되고 false가 표시되지 않습니다. 그래서 당신은 이것을해야합니다 :

    $request = @file_get_contents = ...
    if (empty($request)) {
        echo 'Connection error occurred...';
    }
    
  14. ==============================

    14.php.ini 파일을 변경하십시오.

    php.ini 파일을 변경하십시오.

    allow_url_fopen = On
    
    allow_url_include = On
    
  15. ==============================

    15.file_get_contents ()를 사용하기 전에 file_exists () 함수를 사용해야합니다. 이 방법으로 PHP 경고를 피할 수 있습니다.

    file_get_contents ()를 사용하기 전에 file_exists () 함수를 사용해야합니다. 이 방법으로 PHP 경고를 피할 수 있습니다.

    $file = "path/to/file";
    
    if(file_exists($file)){
      $content = file_get_contents($file);
    }
    
  16. ==============================

    16.

    try {
       $site="http://www.google.com";
       $content = file_get_content($site);
       echo $content;
    } catch (ErrorException $e) {
        // fix the url
    
    }
    
    set_error_handler(function ($errorNumber, $errorText, $errorFile,$errorLine ) 
    {
        throw new ErrorException($errorText, 0, $errorNumber, $errorFile, $errorLine);
    });
    
  17. ==============================

    17.또한

    또한

    allow_url_use = On 
    

    php.ini에서 경고 수신을 중지하십시오.

  18. from https://stackoverflow.com/questions/272361/how-can-i-handle-the-warning-of-file-get-contents-function-in-php by cc-by-sa and MIT license