2009-06-23 73 views
2

好吧,這裏是一個什麼樣的一個細分:在命令行運行(例如,sudo的PHP myscript.php Imagick安裝錯誤 - 類未定義

  • 但是在運行時,當

    1. <? $foo = new Imagick(); ?>作品沒有錯誤。通過網絡browswer我得到Fatal error: Class 'Imagick' not found in /var/www/lhackwith_www/test_html/magic.php on line 1
    2. magickwand未安裝
    3. 延長= imagick.so是在imagick.ini其被成功地根據PHPINFO()被讀取;
    4. 豪ver,imagick不在PHP信息中顯示。

    任何意見,將不勝感激。

  • 回答

    2

    我認爲你絕對確定你已經編輯了正確的php.ini ...
    你檢查了網絡服務器的error.log提示嗎?您可能需要增加該測試的LogLevel。如果它是一個Apache看到http://httpd.apache.org/docs/2.2/mod/core.html#loglevelhttp://httpd.apache.org/docs/2.2/logs.html#errorlog

    也許ldd - print shared library dependencies可以對這個問題提供一些線索:

    <?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>';
    請雙方在命令行,並通過網絡服務器上運行此腳本。它是否抱怨缺少依賴關係?


    EDIT2:因此,「內」的網絡服務器甚至沒有能夠看到。所以延長運行腳本...讓我們來測試在該路徑的點麻煩開始
    <?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

    很好的建議。但是,我檢查了日誌級別和其他所有內容,它只是將parroted還給了我相同的「未找到」錯誤。 – 2009-06-23 20:29:41

    +0

    將php安裝爲cgi或模塊? – VolkerK 2009-06-23 21:23:23

    0

    什麼工作系統是否在使用?我在Mac OSX上遇到了幾個問題,基本上使得安裝一些擴展非常痛苦。但是,對於大多數操作系統,Imagick安裝應該非常簡單。

    在您的命令行中,輸入php -i | grep ini,並確保被列爲正在加載的php.ini與phpinfo()所說正在加載的php.ini相同。如果這些不同,那就是你必須開始的地方。確保extension = imagick.so同時在ini文件中,同時驗證它們是否從同一個目錄加載擴展名(可能性是99%,但是誰知道 - 你可能是個例外)。

    在驗證(可能)兩個php.ini文件都加載了imagick.so並且它仍然無法工作之後,嘗試尾巴-f/path/to/apache/error_log(假設您使用的是apache,當然..)並重新啓動Apache。你在尋找關於加載庫和/或擴展的php警告。希望它能指出你正確的方向。

    希望這有助於

    吉姆

    0

    我最終什麼事做:

    存儲在數據庫中的圖像的方向,然後使用alternatiff動態旋轉圖像,這是方向存儲。不需要圖像處理。

    儘管感謝您的幫助。

    3

    我在將ubuntu從12.04升級到12.10後出現了與imagick類似的問題。

    多擺弄之後,我終於發現,有需要不同的包裝,並用固定它(爲PHP5?):

    sudo apt-get install php5-imagick