2009-06-23 5 views
2

Ok, Voici une ventilation de ce qui se passe:Imagick Erreurs d'installation - classe non définie

  1. <? $foo = new Imagick(); ?> fonctionne sans erreur lorsqu'il est lancé depuis la ligne de commande (par exemple, sudo php myscript.php
  2. Cependant, lors de son exécution . browswer via le web, je me Fatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1
  3. MagickWand est pas installé
  4. extension = imagick.so est en imagick.ini qui est lu avec succès selon la phpinfo();
  5. Howe ver, imagick n'apparaît pas dans les infos PHP.

Tout conseil serait apprécié.

Répondre

2

Je suppose que vous êtes absolument sûr que vous avez édité le droit php.ini ...
Avez-vous vérifié error.log du serveur web pour des conseils? Vous pouvez 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 - print shared library dependencies peut faire la lumière sur 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>';
s'il vous plaît exécuter ce script à la fois sur la ligne de commande et par le serveur Web. Se plaint-il d'une dépendance manquante?


Edit2: Donc le script en cours d'exécution « dans » le serveur Web est même pas en mesure de voir l'extension ... .donc test Let à quel point le chemin de la peine commence
<?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);

+0

Un bon conseil. Cependant, j'ai vérifié les niveaux de notation et tout le reste et il m'a juste répété la même erreur "non trouvée". –

+0

php est-il installé en tant que cgi ou en tant que module? – VolkerK

+0

PHP est un module d'Apache –

0

Quelle exploitation système utilisez-vous? J'ai eu plusieurs problèmes sur Mac OSX qui, fondamentalement, rend l'installation de certaines extensions PLUS douloureuses. 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 php.ini qui est listé comme étant chargé est le même que le php.ini que phpinfo() dit est en cours de chargement. Si ceux-ci sont différents, c'est là que vous devez commencer. Assurez-vous que extension = imagick.so est dans les deux fichiers ini, aussi - vérifiez qu'ils sont en train de charger des extensions depuis le même répertoire (99% de chances qu'ils le soient, mais qui sait - vous pourriez être une exception). Après avoir vérifié que (éventuellement) les deux fichiers php.ini sont en train de charger imagick.so et qu'il ne fonctionne toujours pas, essayez d'utiliser tail -f/path/to/apache/error_log (en supposant que vous utilisez apache, bien sûr ..) et redémarrez apache. Vous cherchez ici des avertissements php sur le chargement de bibliothèques et/ou d'extensions. J'espère que cela vous dirigera dans la bonne direction.

Hope this helps,

Jim

+0

Merci pour votre aide, CentOS est l'OS que j'utilise. le serveur est apache –

+0

Est-ce que quelque chose est sur votre système 64bit? –

+0

Non, je crois que nous sommes en cours d'exécution 32 bits –

0

Ce que je fini par faire:

Stockage de l'orientation de l'image dans la base de données, puis en utilisant AlternaTIFF pour faire pivoter l'image dynamiquement à l'orientation qui a été stocké. Aucune manipulation d'image nécessaire.

Merci pour votre aide cependant.

3

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

Après avoir fini par découvrir beaucoup tripoter qu'il ya un autre paquet nécessaire et fixé avec (pour php5?):

sudo apt-get install php5-imagick 
Questions connexes