Php GD resim oluşturma ile değil sorun

4 Cevap php

Aşağıdaki kod ile, benim tarayıcı 'görüntünün oluşturulduğu veya kaydedilmez' dönüyor. Sana görüntü var konumunu sağlamak. Yani eğer deyim içinde hat nedense yanlış dönüyor, ve evet GD yüklü. Herhangi bir fikir?

if ($img = @imagecreatefromjpeg("/var/www/images/upload/1/1.jpg")) {

            die("image was created");

     } else {

         die ("image was not created or saved");

     }

Tamam, ben yaptım:

<?php

error_reporting(E_ALL);

if (fopen('/var/www/images/upload/1/1.jpg')) {

    echo 'file was opened';

} else {

    echo 'file was not opened';

}


?>

Bu dosya her zaman değil açıldı döndürür, apache grup bu klasörler tümü için tüm izinlere sahiptir. GD veya PHP farklı bir adı var mı?

Bir test komut dosyası bir is_readable () yaptıktan sonra, bu doğru döndü. Sorun başka ne olabilir?

Yani ... Ben komut dosyası çalıştırdığınızda:

error_reporting(E_ALL);
imagecreatefromjpeg("/var/www/images/upload/1/1.jpg");
print_r(error_get_last());
echo ("hi");

Ben ölüm beyaz bir ekran alırsınız. Ben imagecreatefromjpeg hattı, ekran görüntüler 'merhaba' açıklama eğer

Sadece bir hafıza sorunu olup olmadığını görmek için bir 500k jpg resmin üzerinde denedim, ama yine beyaz ekran var.

Ben bir if deyimi içinde imagecreatefromjpeg çalıştırın ve terminal üzerinden komut dosyasını çalıştırdığınızda, imagecreatefromjpeg bir başarı! Aksi takdirde iş olmaz neden = \ Hala çözemiyorum. EDIT: Benim tarayıcısı aracılığıyla tam bu komut dosyasını çalıştırmak da bir başarıdır.

4 Cevap

Açıkçası $ img değeri true olarak değerlendirmek değildir.

Maalesef, bu yazınızın tüm diğer bok için ihtiyaç olduğunu, .. benim noktası oldu karşı sadece çok fazlaydı.

Işlem dosyayı okuyamaz eğer görüntü oluşturma başarısız olabilir. okuma için dosyayı fopen-ing deneyin. Ayrıca, işlev çağrısı (@) önünde hata bastırılması kurtulmak. Sonra üzerine E_ALL ve display_errors için error_reporting ayarlanır.

Güncelleme: fopen başarısız ise, o kullanıcı çalışan php dosyası için okuma izinleri yok. Php / apache süreç olarak çalıştığı, hangi kullanıcı görmek için tmp / bir dosya yazmak için fopen ve fwrite kullanmayı deneyin. Sonra kullanıcı okuma erişimi olduğundan emin olun. Yoksa sadece herkesin sorunu giderdiği için bu okuma erişimini onaylamak için o + r dosyayı chmoding deneyebilirsiniz.

Betik (bir CLI komut değil varsayarak) web sunucusu beklediğinizden daha farklı bir kullanıcı olarak çalışıyor olabilir hatırlayarak / var/www/images/upload/1/1.jpg erişim ayrıcalığına sahip olduğunu kontrol edin

Muhtemelen dosyasına erişmek için izniniz yok.

Lütfen localhost var / www eşler eğer böyle bir dosya aramak için gerek yok. Sadece PHP dosyası olduğunu göreceli yolunu kullanın.

error_get_last() (PHP> = 5.2) kullanılarak ya $ img * () işlevleri dönüyor görmek için php_errormsg çalışın.

Yanı sıra, bir dosyanın readableness kontrol etmek için daha iyi bir yolu, işin garibi, is_readable (), fopen yerine daha.