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

优采云 发布时间: 2021-10-16 19:14

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

  在对网站进行截图时,我们使用了服务器端的工具CutyCapt。可以直接使用服务器上的命令抓取并生成指定url的图片。但是在使用php执行系统命令时,发现无法执行,而是CutyCapt等帮助信息的命令("/usr/local/cutycapt/CutyCapt/xvfb-run.sh --help")可以执行,但是执行调用系统变量脚本不能成功。怀疑是权限问题。后来我把CutyCapt权限设置为www,发现不行。后来查资料,发现是因为nginx服务器在执行命令的时候调用了shell脚本。这时候遇到了权限问题。

  CutyCapt

  截图中使用的系统命令:

  /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人工客服


线