次のことを試してみると何が得られますか。
$fullPath = 'https://www.google.co.uk/images/srpr/logo3w.png';
list($w,$h,$t) = getimagesize($fullPath);
$mimetype = image_type_to_mime_type($t);
$extension = end(explode('.', $fullPath));
header('Content-disposition: attachment; filename="Name.'.$extension.'"');
header('Content-type: '.$mimetype);
readfile($fullPath);
Googleのロゴをダウンロードする必要があります...私はローカルセットアップで行います。
*(このコードでは、サーバーでfopen_wrappersを有効にする必要があります)*
Googleのロゴが正しくダウンロードされた場合は、データベースから提供されているデータに問題があるか、readfileがファイルにアクセスして読み取ろうとしたときの権限の問題である可能性があります。
file_exists( $fullPath ) /// will tell you if the file exists or not
is_readable( $fullPath ) /// could be useful to detect a read error
Googleのロゴが表示されない場合は、サーバーでfopen_wrappersが無効になっているか、コードの他の場所で何か奇妙なことが起こっています。
追記
どこ$pageId
に設定されていますか?URLを介してのように、外部からスクリプトに渡される場合は、データベースクエリを構築する別の方法を使用することをお勧めします。少なくとも、$pageId
値をクエリに挿入する前に、値に対して何らかのエスケープ関数を実行する必要があります。そうでなければ、それはかなりのセキュリティ問題です。これは、あなたのURLにアクセスできる人なら誰でも明らかにそれを変更でき、そうすることであなたのクエリを直接変更できるからです。単純なIDを処理するときにデータベースを保護する最も簡単な方法は、値が数値であることを確認することです。
$pageId = (int) $pageId;