php - 错误: Dynamically fetching css from CDN with fallback to local copy, 如何解决?

标签 php css function external

我之前也问过这个问题,但由于我没有得到可解决的解决方案,所以我再次问这个问题。我正在尝试从外部 CDN 服务获取我的 CSS,比方说 http://cdn.example.com/

此代码假设检查文件是否存在于外部 CDN 上,如果存在,则获取该文件,否则从本地文件夹获取它。

请帮助我更正此代码。

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'; 
    }
}

目前代码运行良好,它从外部 CDN 获取副本,如果外部 CDN 不可用,它会获取本地副本但是也会抛出以下错误:

警告:file_get_contents(http://cdn.site1.com/css/core.css):无法打开流:HTTP 请求失败! HTTP/1.1 404 Not Found in D:\xampp\htdocs\site2\core\core.php on line 165

在第 165 行,这是代码

if (file_get_contents($externalcss, false, $ctx) !== false) {

我正在本地测试它并在我的 XAMPP 服务器上创建了一些域,因此无法共享实时链接。

最佳答案

the docs 中所述, file_get_contents() 如果找不到指定的资源,将发出警告。

这是为数不多的可以使用 @ 错误抑制运算符的情况之一,例如

if (@file_get_contents(...) !== FALSE) { ... }

防止警告破坏您的输出。

关于php - 错误: Dynamically fetching css from CDN with fallback to local copy, 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17572739/

相关文章:

php - 如何在 laravel 中聚合 mongodb 集合数据

html - 第 n 个子选择器不起作用

python - 如何在 Python 中获得与 C 的 __FUNCTION__ 相同的功能?

javascript - 在 javascript/jquery 中获取 CSS 规则

javascript - onclick 事件更新表值一次,但从不在第二次 onclick 事件更新时显示更新值

php - 接受函数作为 PHP 中的参数

r - R中的日期时间差异

PHP 和 MYSQL 空白结果。脚本突然停止。无错误日志

PHP 数组和数组对象

php - symfony2创建没有实体类的表单