在做对网站截图的时候,用到了服务器的一个工具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=http://www.163.com --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用户不使用控制台登录
修改内容:
注释掉:Defaults requiretty
更好的修改方式(较安全):
只添加:Defaults:www !requiretty (www用户不使用控制台登录)
4 用php执行
system('/usr/bin/sudo /usr/local/cutycapt/CutyCapt/xvfb-run.sh /usr/local/cutycapt/CutyCapt/CutyCapt --url=http://www.163.com --out=/tmp/insert2.jpg',$m);
注(更安全方式):
system('sudo /usr/local/cutycapt/CutyCapt/xvfb-run.sh /usr/local/cutycapt/CutyCapt/CutyCapt --url=http://www.163.com --out=/tmp/insert2.jpg',$m);
Nginx重启:
同样增加www用户执行nginx脚本的权限
分享到:
相关推荐
**Cutycapt 网页缩略图抓图工具** Cutycapt 是一款小巧而强大的命令行工具,专为Windows平台设计,用于捕获网页的缩略图或全尺寸截图。它非常适合开发者、设计师和互联网内容管理者,需要快速生成网页预览图像时...
接下来,我们将深入探讨如何使用PHP配合CutyCapt来实现网页抓图功能。 在Web开发中,有时候我们需要生成网页的静态快照,比如为了存档、制作预览或生成报告。PHP作为服务器端脚本语言,本身并不支持直接截取网页...
在本文中,我们将深入探讨如何使用Qt框架结合海康威视SDK来实现视频监控系统的登录、视频预览以及抓图功能。海康威视是一家知名的安防设备制造商,提供了丰富的SDK供开发者集成到自己的应用程序中。Qt是一个跨平台的...
在Windows环境下,使用Python编程语言调用海康威视(Hikvision)的SDK来实现摄像头的登录、视频预览、截图以及光学变焦功能是一项常见的任务。海康威视是全球知名的安防产品提供商,其提供的SDK(Software Development...
10. **API与集成**:对于开发者,有些工具提供了API,可以集成到自己的应用或系统中,实现定制化的网页抓图功能。 总的来说,网页抓图保存工具是现代互联网用户和工作者不可或缺的辅助工具,通过高效地捕获和处理...
红蜻蜓抓图软件(网页抓图、截图工具)方便快捷实用
在IT行业中,Python3是一种广泛使用的编程语言,尤其在数据处理、自动化和...这对于监控系统、机器学习数据收集、视频处理等多种应用场景都非常有用。理解并熟练运用这些基础知识,将有助于你在IT领域的进一步发展。
在Windows系统中,我们可以调用GDI(Graphics Device Interface)或DirectX等图形接口来实现这一功能。在macOS和Linux中,可以利用Quartz或X11的截屏API。 1. **捕获屏幕图像** - 使用Windows API函数`BitBlt`或者...
本文详细介绍了如何使用Java中的`java.awt.Robot`类实现屏幕抓图以及基于该类构建远程桌面控制系统的原理和步骤。通过理解这些基础知识和技术细节,开发人员可以轻松地将这些功能集成到自己的应用程序中,为用户提供...
本项目利用Java实现了一种网页抓图的功能,允许用户下载他们喜欢的网页图片。下面将详细介绍这个过程涉及的技术点和实现方法。 首先,我们要理解网页抓图的基本原理。网页抓图,也称为网页截图或网页快照,是指获取...
网页抓图软件是一种工具,它允许用户捕获和保存网页上的任何可视信息,包括整个页面、部分区域或者特定元素。这种软件通常具有多种功能,如滚动截图、自定义裁剪、编辑工具、云端存储和分享选项,使得用户能更方便地...
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来实现屏幕抓图功能,这对于初学者来说极具价值。MFC是Microsoft提供的一种C++类库,它简化了Windows应用程序的开发,提供了丰富的控件和API...
按一下键盘上的“印屏幕(Pr Scrn)”键可以轻松实现抓图功能。但有时我们需要在程序代码中自动完成抓图功能,而不是手动去按按钮。 那么我们如何用VB实现屏幕抓图呢?本资源包含的源程序代码将为您解答。 ...
在C#编程中,调用摄像头进行截图或实时抓图是一项常见的需求,特别是在开发桌面应用、视频会议系统或者监控软件时。本项目提供了一个解决方案,包含两个不同的版本,都基于.NET Framework 4,并且可以在Visual ...
红蜻蜓网页抓图软件是一款高效实用的截图工具,尤其对于网页内容的捕捉提供了极大的便利。这款软件在设计上注重用户体验,操作简单易懂,使得无论是初级用户还是高级用户都能够轻松上手。在本文中,我们将详细介绍...
总的来说,这个PHP抓图程序结合了递归算法、面向对象编程和可能的并行处理技术,以高效且易于理解的方式实现网页图片的抓取。通过学习和理解这样的程序,开发者可以提升自己在网页抓取和PHP编程方面的能力。
在Windows操作系统中,我们可以调用GDI(Graphics Device Interface)或DirectX等API来实现这一功能。 在C++中,我们可以使用Windows API函数来实现屏幕抓取。例如,`GetDesktopWindow()`函数可以获取桌面窗口的...
在IT行业中,有时我们需要利用各种工具来实现特定的功能,例如实时监控、视频处理等。本话题将详细探讨如何使用LabVIEW结合VLC(VideoLAN Client)的ActiveX控件来实现网络摄像头的视频播放及抓图功能。VLC是一款...
在Windows平台上,可以使用多种方法来实现,包括系统API调用、GDI+库或者更现代的WPF框架。 2. **Winform环境** Winform是.NET Framework提供的一种用于构建桌面应用程序的用户界面技术。它基于Windows API,提供了...
在windous系统下Python实现海康相机登入、预览、抓图、光学变倍、相机激活、区域聚焦、区域曝光功能;linux系统下载相应的海康SDK,并将lib文件更换为相对应的库文件,同时将HCNetSDKCom文件夹拷贝出来(与lib文件夹...