2016-11-21 6 views
0

Dies ist ganze Code, den ich verwendet, die auf einigen anderen Seiten funktioniert, aber auf Google nicht der Fall ist und wirft mir einen Fehler:PHP - get_header wirft Fehler: Dateiname kann nicht leer sein

$url = 'http://www.google.com'; 
$sitemap = $url.'/sitemap.xml'; 
$robots = $url.'/robots.txt'; 
$robotsx = [$sitemap, $robots]; 
$sitemaps = false; 
$robotss = false; 

//GET REDIRECTED URL 
function getRedirectUrl ($robotsx) { 
    stream_context_set_default(array(
     'http' => array(
     'method' => 'HEAD' 
    ) 
)); 
$headers = get_headers($robotsx, 1); 
if (isset($headers['Location'])) { 
    return is_array($headers['Location']) ? array_pop($headers['Location']) : $headers['Location']; 
} 
return false; 
} 

$finalr = getRedirectUrl($robots); 
$finals = getRedirectUrl($sitemap); 

// IF THERE IS NO REDIRECTED URL 
if ($finalr == null){ 
    $robotss = $robots; 
} 
if ($finals == null){ 
    $sitemaps = $sitemap; 
} 


// GET RESPONSE CODE 
function get_http_response_coder ($url) { 
    $headersyy = get_headers($url); 
    return substr($headersyy[0], 9, 3); 
} 
print_r(get_http_response_coder($url)); 

// CHECK MAIN URL FOR REDIRECT 
$xgetheads = get_headers($url, 1); 

// IF THERE IS REDIRECT 
if (isset($xgetheads['Location'])) { 
    if (isset($finalr)){ 
       $get_http_response_coder = get_http_response_coder($finalr); 
    if ($get_http_response_coder != 404) { 
     echo "Your website have robots file. Your robots file is at ".$finalr; 
    } 
    else{ 
     echo "Your website does not have robots file."; 
    } 
    } 
    if ($finalr == null){ 
       $get_http_response_coder = get_http_response_coder($robotss); 
    if ($get_http_response_coder != 404) { 
     echo "Your website have robots file. Your robots file is at ".$robotss; 
    } 
    else{ 
     echo "Your website does not have robots file."; 
    } 
    }  
    if(isset($finals)){ 
    $get_http_response_codes = get_http_response_coder($finals); 


    if ($get_http_response_codes != 404) { 
     echo "Your website have sitemap file. Your sitemap file is at ".$finals; 
    } 
    else{ 
     echo "Your website does not have sitemap file."; 
    } 
    } 
    if($finals == null){ 
    $get_http_response_codes = get_http_response_coder($sitemaps); 


    if ($get_http_response_codes != 404) { 
     echo "Your website have sitemap file. Your sitemap file is at ".$sitemaps; 
    } 
    else{ 
     echo "Your website does not have sitemap file."; 
    } 
    }  
} 

// IF THERE IS NO REDIRECT 
else{ 
    $get_http_response_coder = get_http_response_coder($robots) ; 
    $get_http_response_codes = get_http_response_coder($sitemap); 

    if ($get_http_response_coder != 404) { 
     echo "Your website have robots file. Your robots file is at ".$robots; 
    } 
    else{ 
     echo "Your website does not have robots file."; 
    } 
    if ($get_http_response_codes != 404) { 
     echo "Your website have sitemap file. Your sitemap file is at ".$sitemap; 
    } 
    else{ 
     echo "Your website does not have sitemap file."; 
    } 
} 

Ich erhalte Fehler:

Warning: get_headers(): Filename cannot be empty 

aber wenn ich nur diesen Teil drucke, bekomme ich den richtigen Antwortcode. Warum passiert das und was ist falsch an meinem Code?

+4

Was ist in $ url? Es ist leer! Existiert es überhaupt? Bitte verwenden Sie error_reporting (E_ALL) und ini_set ('display_errors', 1); – twicejr

+0

@twicejr, ich habe es bearbeitet. – codexy

+0

Wenn ich Ihren Code ausführen, funktioniert es und Ausgaben 302. Vielleicht verhält sich Ihre PHP-Version anders als meins. – twicejr

Antwort

0

die URL in http: // Format:

function get_http_response_coder ($url) { 
$headersyy = get_headers($url); 
return substr($headersyy[0], 9, 3); 
} 
$url="http://localhost/sample/stackoverflow/fileresp.txt"; 
var_dump(get_http_response_coder($url)); 
+0

und welches Format ist er url Formate genau? –

+0

@Vijaya Vignesh Kumar Können Sie erklären warum? – codexy

+0

Ich glaube, er sagt, URL ohne www zu verwenden – codexy

Verwandte Themen