Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP proc_open调用程序并获取屏幕截图_Php - Fatal编程技术网

PHP proc_open调用程序并获取屏幕截图

PHP proc_open调用程序并获取屏幕截图,php,Php,我正在尝试运行一个进程,使用这个很酷的软件() 此命令在windows命令行上工作,并创建网站的.png文件: C:\Program Files\SiteShoter>SiteShoter.exe /URL http://www.msn.com /Filename "C:\wamp64\www\my-site\test.png" /BrowserAutoSize 1 /MaxBrowserHeight 25000 MaxBrowserWidth 1500 /BrowserTimeOut 2

我正在尝试运行一个进程,使用这个很酷的软件()

此命令在windows命令行上工作,并创建网站的.png文件:

C:\Program Files\SiteShoter>SiteShoter.exe /URL http://www.msn.com /Filename "C:\wamp64\www\my-site\test.png" /BrowserAutoSize 1 /MaxBrowserHeight 25000 MaxBrowserWidth 1500 /BrowserTimeOut 2000 
我不明白如何使用proc_open在脚本中调用相同的命令。以下是我尝试过但没有成功的东西:

$cmd     = "SiteShoter.exe /URL http://www.msn.com /Filename 'C:\wamp64\www\my-site\test.png' /BrowserAutoSize 1 /MaxBrowserHeight 25000 MaxBrowserWidth 1500 /BrowserTimeOut 2000";
$desc    = [['pipe', 'r'], ['pipe', 'w'], ['pipe', 'w']]; //I don't know if this is needed
$cwd     = 'C:\Program Files\SiteShoter';
$process = proc_open($cmd, $desc, $pipes, $cwd);

运行脚本时不会创建该文件。我能试试什么吗

答案是文件名参数格式化和转义一些双引号,因为命令行程序对其参数进行了挑选

$url = "http://www.msn.com";
$output_path = "c:/wamp64/www/my-site/";

$cmd     = "SiteShoter.exe /URL \"" . $url . "\" /Filename " . $output_path . "test-%date:yyyy-MM-dd%@%time:HHmm%.png /BrowserAutoSize 1 /MaxBrowserHeight 25000 MaxBrowserWidth 1500 /BrowserTimeOut 2000";
$descriptorspec = array();
$cwd = 'C:\Program Files\SiteShoter';
$env = NULL;

if ( $process = proc_open($cmd, $descriptorspec, $pipes, $cwd, $env) ) {
    proc_close($process);
}
无论如何,如果有人正在寻找一个好的程序来捕获网页的图像,我推荐NirSoft的SiteShoter