Pregunta

Bien, aquí hay un desglose de lo que sucede:

  1. <? $foo = new Imagick(); ?> funciona sin error cuando se ejecuta desde la línea de comandos (por ejemplo, sudo php myscript.php
  2. Sin embargo, cuando se ejecuta a través del navegador web obtengo Fatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1.
  3. magickwand no está instalado
  4. extension = imagick.so está en imagick.ini que se lee con éxito de acuerdo con phpInfo ();
  5. Sin embargo, imagick NO aparece en la información de PHP.

Cualquier consejo sería apreciado.

¿Fue útil?

Solución

Supongo que estás absolutamente seguro de que has editado el php.ini correcto ...
¿Revisó el error.log del servidor web en busca de sugerencias? Es posible que desee aumentar el LogLevel para esa prueba. Si es un apache, consulte http://httpd.apache.org/docs /2.2/mod/core.html#loglevel y http: / /httpd.apache.org/docs/2.2/logs.html#errorlog

o tal vez ldd - imprimir dependencias de biblioteca compartida puede arrojar algo de luz sobre el tema:

<?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>';
ejecute este script tanto en la línea de comando como a través del servidor web. ¿Se queja de una dependencia que falta?


edit2: Entonces, el script que ejecuta " dentro de " el servidor web ni siquiera puede ver la extensión .so ... Probemos en qué punto de la ruta comienza el problema
<?php
function foo($path) {
  if ( $path==($dir=dirname($path)) ) {
    return;
  }
  foo($dir);

echo is_dir($path) ? ' d':' -', is_readable($path) ? 'r':'-', is_writable($path) ? 'w':'-', is_executable($path) ? 'x ':'- ', $path, "<br />\n"; }

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

Otros consejos

Tuve un problema similar con imagick después de actualizar ubuntu de 12.04 a 12.10.

Después de mucho jugar, descubrí que se necesita un paquete diferente (¿para php5?) y lo arreglé con:

sudo apt-get install php5-imagick

¿Qué sistema operativo estás usando? He tenido varios problemas en Mac OSX que básicamente hacen que la instalación de algunas extensiones sea demasiado dolorosa. Sin embargo, la instalación de Imagick debería ser realmente simple, para la mayoría de los sistemas operativos.

En su línea de comando, escriba php -i | grep ini, y asegúrese de que el php.ini que aparece como cargado sea el mismo que el php.ini que phpinfo () dice que se está cargando. Si estos son diferentes, ahí es donde debes comenzar. Asegúrese de que extension = imagick.so esté en ambos archivos ini, también: verifique que estén cargando extensiones desde el mismo directorio (99% de posibilidades de que lo estén, pero quién sabe, podría ser una excepción).

Después de haber verificado que (posiblemente) ambos archivos php.ini se están cargando imagick.so y aún no funciona, intente seguir -f / path / to / apache / error_log (suponiendo que esté usando apache, de curso ..) y reiniciar apache. Está buscando advertencias de php sobre la carga de bibliotecas y / o extensiones. Esperemos que te oriente en la dirección correcta.

Espero que esto ayude,

Jim

Lo que terminé haciendo:

Almacenar la orientación de la imagen en la base de datos y luego usar una alternativa para rotar dinámicamente la imagen a la orientación que estaba almacenada. No se necesita manipulación de imágenes.

Gracias por tu ayuda, sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top