Question

D'accord, voici un aperçu de ce qui se passe:

  1. <? $foo = new Imagick(); ?> fonctionne sans erreur lorsqu'il est exécuté à partir de la ligne de commande (par exemple, sudo php myscript.php
  2. Cependant, quand je suis lancé via le navigateur, je reçois Fatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1.
  3. magickwand n'est pas installé
  4. extension = imagick.so se trouve dans imagick.ini qui est lu avec succès conformément à phpInfo ();
  5. Cependant, imagick n'apparaît PAS dans les informations PHP.

Tout conseil serait apprécié.

Était-ce utile?

La solution

Je suppose que vous êtes absolument sûr d'avoir édité le bon fichier php.ini ...
Avez-vous consulté le fichier error.log du serveur Web pour obtenir des astuces? Vous voudrez peut-être augmenter le LogLevel pour ce test. Si c'est un apache, voir http://httpd.apache.org/docs /2.2/mod/core.html#loglevel et http: / /httpd.apache.org/docs/2.2/logs.html#errorlog

ou peut-être ldd - imprimer les dépendances des bibliothèques partagées . éclaircir la question:

<?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>';
veuillez exécuter ce script à la fois en ligne de commande et via le serveur Web. Est-ce qu'il se plaint d'une dépendance manquante?


edit2: Donc, le script qui exécute " dans " le serveur Web n'est même pas capable de voir l'extension .so ... Vérifions à quel point du chemin commence le problème
<?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);

Autres conseils

J'ai eu un problème similaire avec imagick après la mise à jour d'ubuntu de 12.04 à 12.10.

Après avoir beaucoup tripoté, j'ai finalement découvert qu'un autre paquet était nécessaire (pour php5?) et je l'ai corrigé avec:

sudo apt-get install php5-imagick

Quel système d'exploitation utilisez-vous? J'ai eu plusieurs problèmes sur Mac OSX qui rendent fondamentalement l'installation de certaines extensions TRÈS douloureuse. Cependant, l’installation d’Imagick devrait être très simple, pour la plupart des systèmes d’exploitation.

Sur votre ligne de commande, tapez php -i | grep ini et assurez-vous que le fichier php.ini indiqué comme étant en cours de chargement est identique au fichier php.ini indiqué par phpinfo () comme étant en cours de chargement. Si ceux-ci sont différents, c'est par là que vous devez commencer. Assurez-vous également que extension = imagick.so se trouve dans les deux fichiers ini - vérifiez également qu'ils chargent des extensions à partir du même répertoire (99% de chance, mais qui sait - vous pourriez être une exception).

Après avoir vérifié que (le cas échéant) les deux fichiers php.ini sont en train de charger imagick.so et que cela ne fonctionne toujours pas, essayez de mettre queue -f / chemin / vers / apache / error_log (en supposant que vous utilisez apache, of bien sûr ..) et redémarrez Apache. Vous cherchez ici des avertissements php concernant le chargement de bibliothèques et / ou d'extensions. Espérons que cela vous indiquera la bonne direction.

J'espère que cela vous aidera,

Jim

Ce que j'ai fini par faire:

Stockage de l’orientation de l’image dans le DB, puis utilisation alternative pour faire pivoter dynamiquement l’image selon l’orientation stockée. Aucune manipulation d'image nécessaire.

Merci pour votre aide cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top