문제 설명:
ASTERISK AGI PHP 스크립트를 사용하여 이미지를 생성하고 imagick
.
installed:php-imagick/oldstable,now 3.4.4+php8.0+3.4.
AGI PHP 스크립트는 두 부분으로 구성됩니다.
1 전화번호 등 발신자 정보가 포함된 이미지를 생성하고, 전화번호를 기준으로 해당 여권사진을 생성합니다.
2 이 이미지를 휴대폰으로 전송하세요.
PHP 스크립트는 무엇을 합니까?
2: 기존 이미지를 휴대폰으로 보냅니다.
기존 이미지를 사용하면 휴대폰으로 전송되어 문제 없이 표시됩니다.
PHP 스크립트에서 작동하지 않는 것:
1: imagick이 이미지를 생성하지 않았습니다.
Asterisk CLI에서는 스크립트가 를 사용하여 실행되므로 0
오류 메시지가 없는 것을 볼 수 있습니다.
스크립트를 루트로 시작하면 /usr/share/asterisk/agi-bin
모든 것이 잘 작동합니다. Imagick은 이미지를 생성하여 휴대폰에 깔끔하게 전달합니다.
php script.php 01234567
그러나 스크립트가 imagick을 호출하면 다음과 같이 작동이 중지됩니다: $foto = new Imagick("/path/to/image/image.png");
내가 시도한 것:
1 다른 이미지 생성기를 사용하십시오: gdimage
및 gmagick
, 그러나 동일한 문제가 있습니다.
2chown 777 script.php
3 AGI 명령을 사용하여 Asterisk가 올바른 변수를 전달하는지 확인합니다(잘 작동함).
4 다른 사용자( ) imagick으로 CLI에서 PHP 스크립트를 실행해도 su otheruser
작동하지 않습니다.
imagick이 Asterisk의 AGI에서 이미지를 생성하지 않는 이유에 대해 올바른 방향을 알려줄 수 있는 사람이 있나요?
업데이트: 좋습니다. 약간의 진전이 있었습니다. 나는 이것이 읽기 및 쓰기 권한 상황이라고 생각합니다. /tmp에 쓸 때 스크립트가 중지되지 않고 이미지가 실제로 /tmp에 기록됩니다. 이미지를 읽으면 여전히 문제가 발생합니다. 나는 계속 찾고 있었다.
답변1
글쎄, 약간의 고민 끝에 안전하길 바라는 해결책을 찾았습니다. www-data 그룹에 별표를 추가했는데 이제 imagick이 포함된 별표 php agi를 사용하면 문제 없이 이미지를 쓸 수 있고 내 휴대폰으로 쉽게 보낼 수 있습니다. 모든 것이 정상적으로 작동합니다.
(제보해주신 waltinator에게 감사드립니다!)