2016-06-20 7 views
5

"फाइल पढ़ने में असफल":Imagick साथ नहीं खुला पीडीएफ फाइलों कर त्रुटि के साथ गलती में PHP स्क्रिप्ट बूंद से पीडीएफ फाइल को खोलने के लिए कोशिश कर रहा है अपवाद

Uncaught ImagickException: Failed to read the file in ... 

मैं चल रहा हूँ ओएस एक्स, ब्रियू, पीएचपी 7.0, php70-Imagick --HEAD, ImageMagick --with-Ghostscript, GhostScript

कमांड लाइन परीक्षण ठीक काम करता है:

convert 1.pdf 1.jpg 

फ़ाइल अनुमति ठीक है। रीयलपैथ फ़ंक्शन के साथ एक यूआरएल और स्थानीय फाइल दोनों को आज़माएं, इसलिए फ़ाइलपैथ भी ठीक है। ओपन जेपीईजी अगर स्क्रिप्ट ठीक काम करता है।

phpinfo() -> ImageMagick supported formats: EPDF, PDF, PDFA, etc. 

अद्यतन: हल किया गया। नीचे समाधान

+0

और यह PHP स्क्रिप्ट कहां है? क्या आप हमें दिखाएंगे? –

+0

आशा है, यह आपकी मदद कर रहा है: $ im = new Imagick (realpath ('1.pdf')); – oleg

+0

'var_dump (realpath ('1.pdf') के आउटपुट को दिखाएं); कृपया। – Danack

उत्तर

9

यह समस्या ghostscript के पथ के साथ थी। यह "/ usr/local/bin" में स्थित है, लेकिन यह पथ अपाचे के लिए उपलब्ध नहीं है। (Phpinfo -> अपाचे पर्यावरण -> पथ)

समाधान एक और पथ के लिए फ़ाइल सिमलिंक के लिए है:

sudo ln -s /usr/local/bin/gs /usr/bin/gs 

ओएस एक्स एल कैप्टन नोट!/usr/bin/ओएस एक्स 10.11+ में संरक्षित है। आप का पालन करना इस कदम:

1. Reboot to Recovery Mode. Reboot and hold "Cmd + R" after start sound. 
2. In Recovery Mode go to Utilities -> Terminal. 
3. Run: csrutil disable 
4. Reboot in Normal Mode. 
5. Do the "sudo ln -s /usr/local/bin/gs /usr/bin/gs" in terminal. 
6. Do the 1 and 2 step. In terminal enable back csrutil by run: csrutil enable 
2

यहाँ (SIP निष्क्रिय करने के लिए कोई जरूरत नहीं है और इसलिए) ओएस एक्स पर अपाचे पथ वैरिएबल जो symlinking की आवश्यकता नहीं है अद्यतन करने का एक बेहतर तरीका है:

https://www.euperia.com/development/solved-php-imagick-unable-to-open-image-pdf

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