问题描述:
使用 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 中,我看到脚本是使用 a 执行的0
,因此没有错误消息。
如果我以 root 身份启动脚本,/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 以另一个用户身份在 CLI 中启动 PHP 脚本 ( su otheruser
) imagick 也不起作用。
谁能给我指出正确的方向,为什么 imagick 不从 Asterisk 中的 AGI 生成图像?
更新:好的,我已经取得了一些进展。我怀疑这是一个读写权限的情况。当我写入 /tmp 时,脚本不会停止,并且图像实际上被写入 /tmp。阅读该图片仍然会产生问题。我继续寻找。
答案1
好吧,经过一番摆弄,我找到了一个希望安全的解决方案。我将 asterisk 添加到 www-data 组,现在 asterisk php agi with imagick 可以毫无问题地写入图像,我可以轻松地将其发送到手机。一切都按其应有的方式进行。
(感谢 waltinator 的投入!)