سؤال

حسنًا، إليك تفصيلًا لما حدث:

  1. <? $foo = new Imagick(); ?> يعمل بدون أخطاء عند تشغيله من سطر الأوامر (على سبيل المثال، sudo php myscript.php
  2. ومع ذلك، عند التشغيل عبر متصفح الويب أحصل عليه Fatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1.
  3. لم يتم تثبيت العصا السحرية
  4. الامتداد=imagick.so موجود في imagick.ini والذي تتم قراءته بنجاح وفقًا لـ phpInfo();
  5. ومع ذلك، imagick لا يظهر في معلومات PHP.

سيكون موضع تقدير أي نصيحة.

هل كانت مفيدة؟

المحلول

أعتبر أنك متأكد تمامًا من أنك قمت بتحرير ملف php.ini الصحيح...
هل قمت بفحص Error.log الخاص بخادم الويب للحصول على تلميحات؟قد ترغب في زيادة LogLevel لهذا الاختبار.إذا كان أباتشي انظر http://httpd.Apache.org/docs/2.2/mod/core.html#loglevel و http://httpd.Apache.org/docs/2.2/logs.html#errorlog

أو ربما ldd - طباعة تبعيات المكتبة المشتركة يمكن إلقاء بعض الضوء على هذه القضية:

<?php
$p = get_cfg_var('extension_dir');
$modpath = $p.DIRECTORY_SEPARATOR.'imagick.so';
echo $modpath, is_readable($modpath) ? ' readable':' not readable', "<br />\n";
echo '<pre>';
passthru('ldd '.$modpath.' 2>&1'); // in case of spaces et al in the path-argument use escapeshellcmd()
echo '</pre>';
الرجاء تشغيل هذا البرنامج النصي على سطر الأوامر ومن خلال خادم الويب.هل يشكو من التبعية المفقودة؟


تحرير 2:لذا فإن البرنامج النصي الذي يعمل "داخل" خادم الويب غير قادر حتى على رؤية الامتداد .so...دعونا نختبر عند أي نقطة من المسار تبدأ المشكلة
<?php
function foo($path) {
  if ( $path==($dir=dirname($path)) ) {
    return;
  }
  foo($dir);

صدى IS_DIR (مسار $)؟'D': ' -' ، is_readable ($ path)؟'r': '-' ، is_writable ($ path)؟'w': '-' ، is_executable ($ path)؟'x': '-' ، $ path ، "u003Cbr /> ن"؛}

$modpath = get_cfg_var('extension_dir').DIRECTORY_SEPARATOR.'imagick.so'; foo($modpath);

نصائح أخرى

واجهت مشكلة مماثلة مع imagick بعد ترقية نظام التشغيل ubuntu من 12.04 إلى 12.10.

بعد الكثير من العبث اكتشفت أخيرًا أن هناك حزمة مختلفة مطلوبة (لـ php5؟) وقمت بإصلاحها باستخدام:

sudo apt-get install php5-imagick

ما هو نظام التشغيل الذي تستخدمه؟لقد واجهت العديد من المشكلات في نظام التشغيل Mac OSX مما يجعل تثبيت بعض الملحقات أمرًا مؤلمًا للغاية.ومع ذلك، يجب أن يكون تثبيت Imagick بسيطًا جدًا بالنسبة لمعظم أنظمة التشغيل.

على سطر الأوامر الخاص بك ، اكتب PHP -I | GREP INI ، وتأكد من أن php.ini المدرجة على أنها محملة هي نفسها php.ini التي يقول phpinfo () أنه يجري تحميله.إذا كانت هذه مختلفة، فهذا هو المكان الذي عليك أن تبدأ فيه.تأكد من أن الامتداد = imagick.so موجود في كلا الملفين ini، وتأكد أيضًا من أنهما يقومان بتحميل الامتدادات من نفس الدليل (احتمال أن يكونا كذلك بنسبة 99%، ولكن من يدري - قد تكون استثناءً).

بعد التحقق من أنه (من المحتمل) أن كلا الملفين php.ini يقومان بتحميل imagick.so وما زالا لا يعملان، حاول ذيل -f /path/to/Apache/error_log (على افتراض أنك تستخدم Apache، بالطبع.. ) وأعد تشغيل Apache.أنت تبحث هنا عن تحذيرات PHP بشأن تحميل المكتبات و/أو الإضافات.نأمل أن يوجهك في الاتجاه الصحيح.

أتمنى أن يساعدك هذا،

جيم

ما انتهى بي الأمر إلى فعله:

تخزين اتجاه الصورة في قاعدة البيانات ثم استخدام البديل لتدوير الصورة ديناميكيًا إلى الاتجاه الذي تم تخزينه.لا حاجة للتلاعب بالصورة.

شكرا لمساعدتكم على الرغم من.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top