php 抓取网页生成图片(用php执行系统命令的时候发现无法执行,但是可以执行CutyCapt)
优采云 发布时间: 2021-10-03 11:21php 抓取网页生成图片(用php执行系统命令的时候发现无法执行,但是可以执行CutyCapt)
制作网站屏幕截图时,使用服务器的工具cutycapt。您可以通过服务器上的命令直接获取它,以生成指定URL的图片。但是,在使用PHP执行系统命令时,发现无法执行该命令,但是可以执行收录帮助信息的命令,例如cutycapt(“/usr/local/cutycapt/cutycapt/xvfb run.Sh--help”),但无法成功执行调用系统变量的脚本。有人怀疑这是一个许可问题。后来发现cutycapt权限设置为www。后来发现这是因为nginx服务器在执行命令时会调用shell脚本。此时,它将遇到权限问题
可爱的
屏幕截图中使用的系统命令:
/usr/bin/sudo/usr/local/cutycapt/cutycapt/xvfb-run.sh/usr/local/cutycapt/cutycapt/cutycapt--url=--out=/tmp/insert.jpg
1、设置sudo配置文件可写权限
chmod u+w/etc/sudoers
2、增加WWW用户执行cutycapt脚本的权限(添加要运行的脚本和命令的权限):
www ALL=(root)NOPASSWD:/bin/sh、/usr/local/cutycapt/cutycapt/xvfb-run.sh、/usr/local/cutycapt/cutycapt/cutycapt
3、关闭[强制控制台登录]以执行或允许www用户在不使用控制台的情况下登录
修改内容:
注意:需要默认值
更好的修改方法(更安全):
仅添加:默认值:www!要求(WWW用户不使用控制台登录)
4使用PHP执行
系统('/usr/bin/sudo/usr/local/cutycapt/cutycapt/xvfb-run.sh/usr/local/cutycapt/cutycapt/cutycapt-url=--out=/tmp/insert2.jpg',m)
注(更安全的方式):
系统('sudo/usr/local/cutycapt/cutycapt/xvfb-run.sh/usr/local/cutycapt/cutycapt/cutycapt-url=--out=/tmp/insert2.jpg',m)
Nginx重启:
同样,增加WWW用户执行nginx脚本的权限