I am trying to fetch my CSS from external CDN service let's say http://cdn.example.com/
.
This code is suppose to check if file exists on external CDN and if it does, then get that file else get it from a local folder.
Currently this is fetching only the local copy even though the file exists on external CDN.
Please help me correct this code.
function getCSSfile($filename)
{
$externalcss = EXTERNAL_CDN.'css/'.$filename.'.css';
$localcss = LOCAL_CDN.'css/'.$filename.'.css';
$ctx = stream_context_create(array(
'http' => array(
'method' => 'HEAD'
)
));
if (file_get_contents($externalcss, false, $ctx) !== false) {
echo '<link href="' . $externalcss . '" rel="stylesheet" type="text/css" media="all"/>';
} else if (file_exists($localcss)) {
echo '<link href="' . $localcss . '" rel="stylesheet" type="text/css" media="all"/>';
} else {
echo 'Error loading CSS File';
}
}
UPDATE:
Updated the code as per @DaveRandom's suggestion. Currently code runs fine it fetches the copy from external CDN but if the external CDN is unavailable it does fetches the local copy BUT throws the following error too:
Warning: file_get_contents(http://cdn.localtest.com/css/core.css): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in D:\xampp\htdocs\localtest2\core\core.php on line 165
and in line 165 this is the code
if (file_get_contents($externalcss, false, $ctx) !== false) {
I am testing it locally and created some domains on my XAMPP Server, hence cannot share a live link.