Domanda

Okay, ecco una ripartizione di che succede:

  1. <? $foo = new Imagick(); ?> funziona senza errori se eseguito dalla riga di comando (ad esempio, sudo php myscript.php
  2. Tuttavia, quando eseguito tramite il browser Web ottengo Fatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1.
  3. magickwand non è installato
  4. extension = imagick.so è in imagick.ini che viene letto correttamente secondo phpInfo ();
  5. Tuttavia, imagick NON viene visualizzato nelle informazioni PHP.

Qualsiasi consiglio sarebbe apprezzato.

È stato utile?

Soluzione

Suppongo che tu sia assolutamente sicuro di aver modificato il giusto php.ini ...
Hai controllato error.log del server web per suggerimenti? Potresti voler aumentare LogLevel per quel test. Se è un apache vedi http://httpd.apache.org/docs /2.2/mod/core.html#loglevel e http: / /httpd.apache.org/docs/2.2/logs.html#errorlog

o forse ldd - stampa dipendenze librerie condivise può far luce sulla questione:

<?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>';
si prega di eseguire questo script sia dalla riga di comando che tramite il server web. Si lamenta di una dipendenza mancante?


edit2: Quindi lo script che esegue " entro " il server web non è nemmeno in grado di vedere l'estensione .so ... Testiamo in quale punto del percorso inizia il 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);

Altri suggerimenti

Ho avuto un problema simile con imagick dopo aver aggiornato Ubuntu dal 12.04 al 12.10.

Dopo aver giocherellato molto, alla fine ho scoperto che è necessario un pacchetto diverso (per php5?) e risolto con:

sudo apt-get install php5-imagick

Quale sistema operativo stai usando? Ho avuto diversi problemi su Mac OSX che fondamentalmente rendono l'installazione di alcune estensioni MOLTO dolorosa. Tuttavia, l'installazione di Imagick dovrebbe essere davvero semplice, per la maggior parte dei sistemi operativi.

Sulla riga di comando, digitare php -i | grep ini e assicurati che il php.ini elencato come caricato sia lo stesso del php.ini che phpinfo () dice che viene caricato. Se questi sono diversi, è qui che devi iniziare. Assicurati che extension = imagick.so sia anche in entrambi i file ini - verifica che stiano caricando le estensioni dalla stessa directory (99% di probabilità che lo siano, ma chissà - potresti essere un'eccezione).

Dopo aver verificato che (possibilmente) entrambi i file php.ini stanno caricando imagick.so e che non funziona ancora, prova a tail -f / path / to / apache / error_log (supponendo che stai usando apache, di corso ..) e riavvia apache. Stai cercando qui avvisi php sul caricamento di librerie e / o estensioni. Spero che ti indichi nella giusta direzione.

Spero che questo aiuti,

Jim

Cosa ho finito per fare:

Memorizzando l'orientamento dell'immagine nel DB e quindi usando alternatiff per ruotare dinamicamente l'immagine sull'orientamento che è stato memorizzato. Nessuna manipolazione dell'immagine necessaria.

Grazie per l'aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top