어떻게 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 단계 : 반환 코드를 확인하십시오 : if ($ content === FALSE) {// 여기에서 오류를 처리하십시오.}
1 단계 : 반환 코드를 확인하십시오 : if ($ content === FALSE) {// 여기에서 오류를 처리하십시오.}
2 단계 : 오류 제어 연산자 (즉 @)를 file_get_contents ()에 대한 호출 앞에 두어 경고를 표시하지 않습니다. $ content = @file_get_contents ($ site);
-
==============================
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.이 작업을 수행하는 가장 좋은 방법은 매우 간단합니다.
이 작업을 수행하는 가장 좋은 방법은 매우 간단합니다.
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.앞에 @를 추가 할 수 있습니다 : $ content = @file_get_contents ($ site);
앞에 @를 추가 할 수 있습니다 : $ content = @file_get_contents ($ site);
이렇게하면 모든 경고가 억제됩니다. 오류 제어 연산자를 참조하십시오.
편집 : 'http : //'를 삭제하면 더 이상 웹 페이지가 아니라 디스크의 'www.google .....'파일을 찾습니다.
-
==============================
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.여기 내가 어떻게 해냈는지 ... 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.
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.다음은 그 문제를 다루는 방법입니다.
다음은 그 문제를 다루는 방법입니다.
$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.가장 좋은 방법은 파일에 기록하거나 중요한 메일을 전자 메일로 보내는 것처럼 유용한 작업을 수행 할 자체 오류 및 예외 처리기를 설정하는 것입니다. http://www.php.net/set_error_handler
가장 좋은 방법은 파일에 기록하거나 중요한 메일을 전자 메일로 보내는 것처럼 유용한 작업을 수행 할 자체 오류 및 예외 처리기를 설정하는 것입니다. http://www.php.net/set_error_handler
-
==============================
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.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.이렇게하면 데이터를 가져 오려고 시도합니다. 작동하지 않으면 오류를 catch하여 catch 내에서 필요한 작업을 수행 할 수 있습니다.
이렇게하면 데이터를 가져 오려고 시도합니다. 작동하지 않으면 오류를 catch하여 catch 내에서 필요한 작업을 수행 할 수 있습니다.
try { $content = file_get_contents($site); } catch(\Exception $e) { return 'The file was not found'; }
-
==============================
13.여기에 엄청난 해답이 있지만 아무 것도 제대로 작동하지 않습니다. @로 file_get_contents를 숨기면 일부 사용자가 주장한 것처럼 NULL이 표시되고 false가 표시되지 않습니다. 그래서 당신은 이것을해야합니다 :
여기에 엄청난 해답이 있지만 아무 것도 제대로 작동하지 않습니다. @로 file_get_contents를 숨기면 일부 사용자가 주장한 것처럼 NULL이 표시되고 false가 표시되지 않습니다. 그래서 당신은 이것을해야합니다 :
$request = @file_get_contents = ... if (empty($request)) { echo 'Connection error occurred...'; }
-
==============================
14.php.ini 파일을 변경하십시오.
php.ini 파일을 변경하십시오.
allow_url_fopen = On allow_url_include = On
-
==============================
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.
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.또한
또한
allow_url_use = On
php.ini에서 경고 수신을 중지하십시오.
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
'PHP' 카테고리의 다른 글
PHP에서 RecursiveIteratorIterator는 어떻게 작동합니까? (0) | 2018.09.20 |
---|---|
echo와 print는 PHP에서 어떻게 다릅니 까? [복제] (0) | 2018.09.20 |
REST API - PUT DELETE POST GET을 사용하는 이유는 무엇입니까? (0) | 2018.09.20 |
PHP에서 ob_start ()의 사용법은 무엇입니까? (0) | 2018.09.20 |
명령 줄에서 사용하는 php.ini 파일을 찾는 방법은 무엇입니까? (0) | 2018.09.20 |