Neden yüklü PHP uzantısı sınıf örnekleme başarısız olur?

4 Cevap php

Ben, yeniden boyutlandırma ya Imagick veya GD kullanarak, sunucu üzerinde mevcut ne bağlı bazı kodlar var.

Ben extension_loaded() fonksiyonunu kullanarak her kullanılabilirliği için test ediyorum.

if (extension_loaded('imagick')) {
    $image = new Imagick();
    ...
}

Ben onlar aldığınız bir kullanıcı raporlama var:

Ölümcül hata: Sınıf 'Imagick bulunamadı'

Ne şartlar Imagick uzantısı yüklenen ancak mevcut değil sınıfta neden olur? Nasıl benim kod daha güçlü hale getirmek için test edilmelidir?

4 Cevap

1: Her zaman (karşılaştırarak önce dize küçük harf yapmak) bir harf duyarsız bir şekilde denetimlerini yapmak

2: özellikleri kontrol, kütüphane kontrol yok. Belki adamcağız bir kütüphane versiyonu var ya da diğer fonksiyon isimleri vardır

3: in php.ini you may disable some functions explicitly by name bu yüzden * Eğer 2. işaret ve yerine extension_ bir function_exists ile kontrol başvurmak gerektiğini düşünüyorum

Ayrıca, rapor almalısınız /var/log/apache2/errors bir göz veya ImageMagick uzantısı (segmentation fault veya düşük seviyeli diğer türdeki hataların tarafından oluşturulan herhangi bir iç hata kontrol etmek için o müşterinin sunucuda eşdeğer almak orada ...)

Sınıfı da varsa kontrol edebilir?

class_exists ("Imagick")

Harfe duyarlı?

'Imagick' ve Imagick.

    yum install ImageMagick
    yum install ImageMagick-devel
    pecl install imagick
    echo "extension=imagick.so" > /etc/php.d/imagick.ini
    service httpd restart [/etc/init.d/httpd restart]
    php -m | grep imagick

Reference