0

以前も質問させていただきましたが、解決できなかったので再度質問させていただきます。外部 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が利用できない場合はローカル コピーをフェッチしますが、次のエラーもスローします。

Warning: file_get_contents(http://cdn.site1.com/css/core.css): failed to open stream: HTTP request failed! 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 サーバーにいくつかのドメインを作成したため、ライブ リンクを共有できません。

4

1 に答える 1

2

docsに記載されているように、指定されたfile_get_contents()リソースが見つからない場合は警告がスローされます。

@これは、エラー抑制演算子の使用が正当化される数少ないケースの 1 つです。

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

警告が出力を台無しにするのを防ぐため。

于 2013-07-10T14:28:50.830 に答える