2012-03-31 13 views
14

मैं विंडोज़ पर कल्पना PHP विस्तार स्थापित करने की कोशिश कर रहा हूं। यह PHP 5.2, PHP 5.3 पर काम कर रहा था लेकिन मुझे PHP 5.4 के साथ समस्याएं हैं।इमेजिक PHP 5.4 एक्सटेंशन सापेक्ष पथों के साथ काम नहीं करता है। (विंडोज़)

इमेजिक संस्करण: ImageMagick-6.7.6-3-Q16-windows-dll। मॉड्यूल काम कर रहा है। मैं phpinfo() में कल्पना देख सकते हैं।

समस्या यह है कि कल्पना फाइलों के सापेक्ष पथ को पहचानती नहीं है। उदाहरण के लिए, अगर मैं एक ही फ़ोल्डर में सरल index.php और a.jpg है, मैं $im = new imagick('a.jpg'); उपयोग नहीं कर सकते, क्योंकि मैं अपवाद:

Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image `a.jpg': No such file or directory @ error/blob.c/OpenBlob/2614' in D:\Web\i\index.php:3 Stack trace: #0 D:\Web\i\index.php(3): Imagick->__construct('a.jpg') #1 {main} thrown in D:\Web\i\index.php on line 3

लेकिन जब मैं निरपेक्ष पथ $im = new imagick('D:\web\i\a.jpg'); का उपयोग यह है काम कर रहे।

मुझे पता चला कि Imagick संदर्भ के रूप में अपाचे कोर डीआईआर का उपयोग कर रहा है। मैंने पथ के बिना छवि को सहेजा:

$ im-> लिखें छवि ('यह-क्या-क्या-im-looking-for.jpg');

और मैं यह सी में पाया: \ Program Files (x86) \ Apache24 \ इस-है-क्या-आईएम दिखने-for.jpg

समस्या है, कि मेरे सभी पुराने लिपियों हैं सापेक्ष पथ के साथ लिखा है और मैं उनका उपयोग कर गिनती करना चाहता हूं।

मुझे नहीं पता, अगर समस्या स्वयं कल्पना में है, या कहीं PHP 5.4 में है।

अग्रिम धन्यवाद

+0

अपने प्रश्न क्या है? क्या आप '$ _SERVER ['DOCUMENT_ROOT']' का उपयोग नहीं कर सकते? –

+0

क्या यह केवल इमेजिक समस्या है? क्या आप 'echo __DIR__'' कर सकते हैं और जांच सकते हैं कि यह आपकी कार्यशील निर्देशिका नहीं है? –

+1

बेन: मेरा सवाल यह है कि, वर्तमान निर्देशिका (डी: \ वेब \ i) को अपाचे रूट निर्देशिका (सी: \ प्रोग्राम फ़ाइलें (x86) \ Apache24 \) के बजाय कार्यशील निर्देशिका के रूप में उपयोग करने के लिए कल्पना कैसे करें (जैसा कि यह काम कर रहा था पुराने PHP संस्करण) –

उत्तर

10

लगता है कि आपने एक बग का पता लगाया हो सकता है।

मैं http://bugs.php.net/report.php

पर इसकी रिपोर्ट इस बीच में सुझाव देंगे, आप __DIR__ या __FILE__ का उपयोग कर एक निरपेक्ष पथ का निर्माण करने से उसके चारों ओर काम कर सकता था।

उदाहरण के लिए, स्क्रिप्ट की निर्देशिका का उपयोग करने के लिए, निम्न करें:

$im = new imagick (__DIR__ . DIRECTORY_SEPARATOR . 'a.jpg'); 
+2

से संबंधित अधिक धन्यवाद, यह कामकाज काम कर रहा है। वास्तव में, बेहतर तरीका (मेरे लिए) realpath है ('ए।जेपीजी '); यह बिना किसी समस्या के काम कर रहा है। मैं बस यह पता लगाने की कोशिश कर रहा था, अगर किसी और को भी ऐसी ही समस्या थी। मैंने 2 अलग php_imagick.dll (मैं इसे विंडोज़ के तहत स्वयं संकलित करने में सक्षम नहीं हूं) और 4 अलग इमेजिक संस्करण (इंस्टॉलर) की कोशिश की लेकिन मुझे लगता है कि यह वास्तविक समस्या नहीं है, क्योंकि पूर्ण पथ कल्पना के साथ ठीक काम कर रहा है। –

संबंधित मुद्दे