2016-06-20 16 views
5

Đang cố gắng để mở tập tin PDF từ php script thả vào lỗi với lỗi:Imagick làm file pdf không cởi mở với "Không thể đọc tập tin" ngoại lệ

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

Tôi đang chạy OS X, Brew, PHP 7.0, php70-imagick --Bây giờ, ImageMagick --with-GhostScript, GhostScript

thử nghiệm dòng lệnh hoạt động tốt:

convert 1.pdf 1.jpg 

file permission là ok. Hãy thử cả hai, một URL và tập tin địa phương với chức năng realpath, do đó, filepath là ok quá. Kịch bản hoạt động tốt nếu mở jpeg.

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

CẬP NHẬT: Đã giải quyết. Giải pháp dưới đây.

+0

Và đoạn mã PHP này ở đâu? Bạn có cho chúng tôi xem không? –

+0

Hy vọng, nó giúp bạn: $ im = new Imagick (realpath ('1.pdf')); – oleg

+0

hiển thị đầu ra của 'var_dump (realpath ('1.pdf')); – Danack

Trả lời

9

Vấn đề này là với đường dẫn đến ghostscript. Nó nằm trong "/ usr/local/bin", nhưng đường dẫn này không có sẵn cho Apache. (Phpinfo -> Apache Môi trường -> PATH)

Giải pháp là để liên kết mềm tập tin vào con đường khác:

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

OS X El Capitan Lưu ý!/usr/bin/trong OS X 10.11+ được bảo vệ. Bạn cần phải làm theo các bước này:

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 
Các vấn đề liên quan