Skip to Content
Go Back
안형우

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

📌 워드프레스, 답답한 빌더와 플러그인 대신 시원하게 커스터마징하기(강의) 2023-01-15
📌 아무도 말하지 않는 PHP의 좋은 점 2018-10-13
📌 유지보수하기 쉬운 CSS 전략(슬라이드) 2016-12-20
📌 워드프레스 테마에서 템플릿 파일 매칭 순서 2013-05-12

PHP Imagick을 통한 PDF 제어가 안 될 때 (an operation not allowed by the security policy `PDF’)

AH01071: Got error 'PHP message: PHP Fatal error: Uncaught ImagickException: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408

위와 같은 에러가 발생하면서 PDF 1페이지를 이미지로 변경하는 로직이 작동하지 않았습니다. 알아 보니 ImageMagick이 보안 정책으로 PDF 파싱을 막아 놨기 때문이네요.

이 때는 정책을 변경해 주면 됩니다.

/etc/ImageMagick-6/policy.xml 파일에 정책이 선언돼 있습니다.

PDF와 관련된 선언은 아래와 같은 형태입니다. 보면 coder 영역에 대한 설정이고, 파일 패턴은 PDF다, 권한은 없다 하고 선언이 돼 있다는 것을 알 수 있을 겁니다.

<policy domain="coder" rights="none" pattern="PDF" />

패턴과 권한이야 익숙한데 도메인(영역)에서 코더는 무엇일까요?

인코더, 디코더를 말하는데요. 이미지매직이 PDF를 해석하고 다시 PDF 문서를 만들 때 사용하는 인코더, 디코더에게 PDF 관련해서는 아무것도 하지 말라고 보안 설정에 해둔 것이지요. 그러니까 PDF는 건드릴 수 없다고 에러를 뿜었던 것입니다.

자, 권한에 읽기와 쓰기를 주면 해결됩니다. 아래처럼 수정해 줍니다. 만약 PDF 관련 설정이 없다면 만들어 주면 됩니다.

<policy domain="coder" rights="read|write" pattern="PDF" />

중요. 웹서버에 적용하려면

고친 뒤 아파치 혹은 php-fpm을 재시작해 줘야 적용된다.

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다