php 抓取网页生成图片(用php执行系统命令的时候发现无法执行,但是可以执行CutyCapt)

优采云 发布时间: 2022-03-22 00:32

  php 抓取网页生成图片(用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 !requiretty(www 用户不使用控制台登录)

  4 用php执行

  system('/usr/bin/sudo /usr/local/cutycapt/CutyCapt/xvfb-run.sh /usr/local/cutycapt/CutyCapt/CutyCapt --url= --out=/tmp/insert2.jpg',$m);

  注意(更安全的方式):

  system('sudo /usr/local/cutycapt/CutyCapt/xvfb-run.sh /usr/local/cutycapt/CutyCapt/CutyCapt --url= --out=/tmp/insert2.jpg' ,$m);

  Nginx 重启:

  同时增加www用户执行nginx脚本的权限

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线