第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GD庫出現(xiàn)白屏問題如何解決?

GD庫出現(xiàn)白屏問題如何解決?

PHP
慕婉清6462132 2023-04-21 17:15:42
我在 GD PHP 庫中遇到問題。當我將圖像發(fā)送到本地主機 VM 時,圖像通常會在屏幕上生成,但是當我嘗試在 VPS 上執(zhí)行此操作時,我不會生成圖像并且屏幕是白色的。我已經(jīng)檢查過兩臺機器上的 lib GD 是否相同,一切似乎都沒問題。以下是我在屏幕上生成圖像的代碼:    $image = imagecreatefrompng((isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]" . "/wp-content/uploads/cart1.png");    $imageCart = imagecreatefrompng($perfil);    $titleColor = imagecolorallocate($image, 255, 255, 255);    $gray = imagecolorallocate($image, 100, 100, 100);    $black = imagecolorallocate($image, 0, 0, 0);    imagecopymerge($image, $imageCart, 60, 177, 0, 0, imagesx($imageCart), imagesy($imageCart), 100);    imagestring($image, 5, 170, 175, "NOME  " . strtoupper($nomeCompleto), $titleColor);    imagestring($image, 5, 170, 205, "CPF  " . $cpf, $titleColor);    imagestring($image, 5, 170, 235, "MATRICULA  " . $matricula, $titleColor);    imagestring($image, 5, 170, 263, "DT NASCIMENTO " . $dtnacimento, $titleColor);    header("Content-type: image/png");    imagepng($image);    imagepng($imageCart);    imagedestroy($image);    imagedestroy($imageCart);
查看完整描述

1 回答

?
至尊寶的傳說

TA貢獻1789條經(jīng)驗 獲得超10個贊

這個問題很有趣,因為本地和遠程服務(wù)器環(huán)境在評論中被報告為相同。通常的問題是gd擴展安裝在一個中,而在另一個中丟失,但這里不是這種情況。他們甚至被報告為具有相同的內(nèi)部版本號。


所以第一個問題就在這里:


imagepng($image);

imagepng($imageCart);

該imagepng()函數(shù)獲取圖像的二進制數(shù)據(jù)并將其發(fā)送到/dev/stdout,Web 服務(wù)器將在此處捕獲該數(shù)據(jù),并傳輸?shù)桨l(fā)出請求的客戶端。擁有其中兩個可能會產(chǎn)生奇怪的結(jié)果,因為瀏覽器將看到兩個連接的 PNG 圖像。如評論中所述,這可能適用于某些瀏覽器,但可能不適用于其他瀏覽器 - 換句話說,我們不能依賴它工作。最好只發(fā)送有效輸出,即使在某些情況下我們可以讓它工作(在它工作的地方,瀏覽器可能使用第一個而丟棄第二個)。所以要做的第一件事就是只發(fā)送一張圖片。


下一個問題是在這一行中,通過調(diào)試發(fā)現(xiàn):


$image = imagecreatefrompng((isset($_SERVER['HTTPS']) ? "https" : "http") .

    "://$_SERVER[HTTP_HOST]" .

    "/wp-content/uploads/cart1.png");

本質(zhì)上,這會通過 HTTP/HTTPS 加載源 PNG 圖像。這利用了 PHP 中允許使用 URL 代替文件路徑的功能。從手冊:


如果啟用了fopen 包裝器,則 URL 可以用作此函數(shù)的文件名。有關(guān)如何指定文件名的更多詳細信息,請參見fopen() 。請參閱支持的協(xié)議和包裝器以獲取有關(guān)各種包裝器具有哪些功能的信息的鏈接、它們的使用說明以及它們可能提供的任何預(yù)定義變量的信息。


我會冒險猜測你allow_url_fopen在本地機器上是真的,而在你的 VPS 上是假的或沒有設(shè)置。這本可以通過遠程更改來實現(xiàn),但所做的修復(fù)可能更好——那就是直接從文件系統(tǒng)加載它。


如果您使用 fopen 包裝器,那么您實際做的是向 Web 服務(wù)器發(fā)出請求,該請求從磁盤獲取圖像,然后通過 curl 將其返回。因此,通過直接使用其文件名獲取圖像,您可以“省去中間人”并更有效地獲取圖像。


在這些情況下通常使用目錄遍歷運算符來創(chuàng)建相對于腳本目錄的路徑名。使用的一個非常好的解決方案是:


imagecreatefrompng("../../../wp-content/uploads/cart1.png")

您還可以使用魔術(shù)變量(假設(shè)腳本是從項目根目錄向下三層):


$projectDir = realpath(__DIR__ . "/../../..");

imagecreatefrompng($projectDir . "/wp-content/uploads/cart1.png")

您可能會發(fā)現(xiàn) WordPress 設(shè)置了一些它自己的項目目錄常量,因此在這種情況下也可以使用它們。


查看完整回答
反對 回復(fù) 2023-04-21
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號