3

サーバーで利用可能なものに応じて、Imagickまたは GDを使用して画像のサイズを変更するコードがいくつかあります。

関数を使用して、それぞれの可用性をテストしていextension_loaded()ます。

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

受信していると報告しているユーザーが 1 人います。

致命的なエラー: クラス 'Imagick' が見つかりません

Imagick 拡張機能が読み込まれているのに、クラスが利用できないという状況はどのような状況ですか? コードをより堅牢にするためには、どのようにテストすればよいですか?

4

4 に答える 4

2

1:常に大文字と小文字を区別しない方法でチェックを実行します(比較する前に文字列を小文字にします)

2:ライブラリをチェックせず、機能をチェックします。多分それはバグがあるか他の関数名を持っているライブラリバージョンを持っています

3:php.iniでは、名前で明示的に一部の関数を無効にすることができるので、ポイント#2に頼って、extension_*ではなくfunction_existsで確認する必要があると思います。

また、/var/log/apache2/errorsそのクライアントのサーバーまたは同等のものを調べて、ImageMagick拡張機能によって生成された内部エラーを確認します(セグメンテーション違反または他のタイプの低レベルエラーがそこで報告されるはずです...)

于 2009-09-25T11:03:34.160 に答える
2

クラスも存在するかどうかを確認できますか?

class_exists("Imagick")

于 2009-09-25T09:15:19.820 に答える
0

大文字と小文字を区別?

「imagick」とImagick.

于 2009-09-25T08:46:19.960 に答える
0
    yum インストール ImageMagick
    yum install ImageMagick-devel
    pecl インストール imagick
    echo "extension=imagick.so" > /etc/php.d/imagick.ini
    サービス httpd 再起動 [/etc/init.d/httpd 再起動]
    php -m | grep imagick

参照

于 2012-06-06T09:47:41.050 に答える