7

現在、単純なphp Webサイトに取り組んでいます

問題は、私の Web サイト全体 (すべての php ファイルで発生) の画像がランダムに破損し、エラー リソースが Image として解釈されましたが、MIME タイプ text/htmlで転送されましたが、ページを数回更新しようとすると表示されることです。画像を再度読み込むと、エラーはなくなりました。

すべての img パスを確認しましたが、画像が存在します。img src=""また、ファイルに何もないことを確認しました。サーバーの設定によるものでしょうか?.htaccess ファイルを確認しましたが、空白です。問題を解決するには?ありがとう

Chrome ウェブ デベロッパー:

Request URL:http://goodbyedear.com.hk/images/index_48.jpg
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-TW,zh;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=ee5297bd4973576b6a318cd9a33c4151; aaaaaaa=96b0422aaaaaaaa_96b0422a
Host:goodbyedear.com.hk
If-Modified-Since:Mon, 21 Oct 2013 17:59:24 GMT
Referer:http://goodbyedear.com.hk/index.php
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Response Headersview source
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Close
Content-Length:144
Expires:Sat, 6 May 1995 12:00:00 GMT
P3P:CP=NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM
Pragma:no-cache

私のコード(参照用):

<?php
session_start();
require_once('db_connect.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>首頁</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/jquery.latest.js"></script>
</head>
<body>
<div id="container">
    <?php require_once ('header.php'); ?>
    <div id="center">
        <img id="slider" src="images/index_17.jpg" />
        <div id="subGroup">
            <div class="sub">
                <img class="subLeft" src="images/index_18.jpg" />
                <img class="subTopRight" src="images/index_19.jpg" />
                <div class="subBottomRight">作為全港第一間成立的寵物火化殯儀公司,其心路歷程盡在此。&lt;a class="viewAll" href="intro.php">View All</a></div>
            </div>
            <div class="sub" >
                <img class="subLeft" src="images/index_21.jpg" />
                <img class="subTopRight" src="images/index_22.jpg" />
                <div class="subBottomRight">讓您了解詳細的服務流程, 令您更安心... <a class="viewAll" href="service.php">View All</a></div>
            </div>
            <div class="sub">
                <img class="subLeft" src="images/index_28.jpg" />
                <img class="subTopRight" src="images/index_29.jpg" />
                <div class="subBottomRight">我們了解每隻寵物在主人心目中都是獨一無二,所以提供各種不同的紀念品,讓客人選擇製作獨一無二的紀念品,讓您的寵兒以另一型式留在主人身邊。&lt;a class="viewAll" href="souvenir.php">View All</a></div>
            </div>
            <div class="sub">
                <img class="subLeft" src="images/index_30.jpg" />
                <img class="subTopRight" src="images/index_31.jpg" />
                <div class="subBottomRight">感謝您對我們的任何意見,歡迎留言給我們!<a class="viewAll" href="board.php">View All</a></div>
            </div>
        </div>
        <div id="latestNews">
            <img id="latestTitle" src="images/index_23.jpg" />
            <img id="latestLeft" src="images/index_25.gif" />
            <div id="latestContent">
                <?php
                $sql = "SELECT * FROM pet_news LIMIT 6";
                $result = $dbh->query($sql);
                if ($result->rowCount() == 0) {
                    echo "<p>沒有最新消息&lt;/p>";
                } else {
                    foreach ($result->fetchAll() as $key => $row) {
                    ?>
                    <div class="newsItem">
                        <div class="newsBoxTitle"><?php echo $row["title"];?></div>
                        <div class="newsBoxDate"><?php echo $row["date"];?></div>
                        <div class="newsBoxContent"><?php echo mb_substr($row["content"],0,30,"UTF-8")."......";?></div>
                        <a class="newsLink" href="news.php?page=1#news<?php echo ($key + 1);?>">詳情</a>
                    </div>
                    <?php
                    }
                }
                $dbh = null;
                ?>
            </div>
            <img id="latestBottom" src="images/index_36.gif" />
        </div>
    </div>
    <?php require_once ('footer.php'); ?>
</div>
</body>
</html>
4

3 に答える 3

4

あなたが直面している問題は、(ほとんどの場合) httpd.conf の次の行によって引き起こされます。

#LoadModule mime_module modules/mod_mime.so

次のようにコメントを外す必要があります(その後、Apacheを再起動します)。

LoadModule mime_module modules/mod_mime.so

このモジュールは、HTTP 応答に MIME タイプ (Content-Type ヘッダー) を提供する役割を果たします。これがないと (Content-Type ヘッダー)、ブラウザーはいわゆるタイプ スニッフィングを実行する必要があります。これについては、ここで IE について大まかに説明します (ただし、他のブラウザーでも同様に見える場合があります)。

もう 1 つの理由 (このモジュールが機能している場合) は、mime.typesファイルがないか、提供しようとしているファイルの MIME タイプが含まれていないことです。

以下を参照してください-左側-これは画像を提供する方法であり、右側はどのように見えるかです:

ここに画像の説明を入力

左 - mod_mime をコメントアウト

右 - mod_mime のコメントを解除

于 2013-11-13T11:53:27.970 に答える
3

私がしたこと

新しいタブで画像を開きました。開発者ツールを開き、[ネットワーク] タブに移動して、[ナビゲーション時にログを保持する] をオンにしました。

結果

画像は正常にロードされましたが、2 回または 5 回のリロード後にtext/htmlコンテンツを受信しました。これは自動的に新しいtext/htmlをリロードし、最後に に自動的にリロードしましたimage/jpegtext/htmlそのため、新しいタブで開いた場合や、HTML からロードした場合は通常の画像が表示されます。明らかに、のソースは で<img/>はないtext/htmlため、新しいタブで直接開いた画像で発生するため、自動的にリロードされません。 ここに画像の説明を入力 赤いアウトラインのものが最初text/htmlで、青い矢印は自動リロード インジケーターです。

ログ

これは、通常の画像、最初の html、2 番目の html、および最終的な画像の 4 つのリクエストのログです - http://pastebin.com/L5wKurZp

理由

Webサーバーの問題だと思います。

ソリューション

わかりませんが、次の行を.htaccessファイルに追加してみてください。

<IfModule mod_mime.c>
    AddType image/webp        webp
    AddType image/jpeg        jpg jpeg
    AddType image/webp        webp
</IfModule>
于 2013-11-10T15:39:03.303 に答える
1

画像は「破損」していません。むしろ、画像自体をリロードしようとする HTML ファイルを取得します。JS リダイレクトは標準の HTTP リダイレクトではないため、この種のことはすべてのブラウザーでサポートされているわけではありません。これは異常な内容です:

HTTP/1.0 200 OK
Expires: Sat, 6 May 1995 12:00:00 GMT
P3P: CP=NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 144
Connection: Close

<html><body><script>document.cookie='jjjjjjj=8eb87ff1jjjjjjj_8eb87ff1; path=/';window.location.href=window.location.href;</script></body></html>

何が原因でしょうか? もちろん、イメージは得られません。リクエストは画像に「着陸」せず、傍受されています - の設定を確認してくださいmod_rewrite。システムは明らかに Cookie を設定してリダイレクトしようとしていますが、それは Javascript で行われています。PHP でこれをサーバー側で実行し、Cookie ヘッダーと 302 リダイレクトのみを送信する必要があります。

<?php
    setcookie('jjjjjjj', '8eb87ff1jjjjjjj_8eb87ff1');
    header("Location: {$_SERVER['REQUEST_URI']}");
    exit();
?>

同じ URL に対して、画像が存在しないというメッセージも表示されました。どうやら、複数のサーバーがリクエストに応答しています。リクエストが「正常な」サーバーに到達すると、画像が表示されます。それ以外の場合は、HTML の「再試行してください」または完全なエラーが発生します。

HTTP/1.1 406 Not Acceptable
Date: Sat, 16 Nov 2013 22:46:48 GMT
Server: Apache
Content-Length: 389
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /images/index_48.jpg could not be found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
于 2013-11-16T22:53:56.043 に答える