Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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 wkhtmltopdf会话不工作_Php_Session Cookies_Wkhtmltopdf - Fatal编程技术网

Php wkhtmltopdf会话不工作

Php wkhtmltopdf会话不工作,php,session-cookies,wkhtmltopdf,Php,Session Cookies,Wkhtmltopdf,当我调用php:exec./wkhtmltopfd-amd64 google.com google.pdf时,我能够生成一个google的pdf 我需要创建一个我的网站的pdf文件,但是,内容取决于会话。因此,php命令exec./wkhtmltopdf-amd64 myprofile.php profile.pdf将生成一个与浏览器内容不同的pdf文件 经过一些研究,我发现了一个示例,其中有人将会话id作为wkhtmltopdf命令的一部分传递。这是我的命令:exec./wkhtmltopf-

当我调用php:exec./wkhtmltopfd-amd64 google.com google.pdf时,我能够生成一个google的pdf

我需要创建一个我的网站的pdf文件,但是,内容取决于会话。因此,php命令exec./wkhtmltopdf-amd64 myprofile.php profile.pdf将生成一个与浏览器内容不同的pdf文件

经过一些研究,我发现了一个示例,其中有人将会话id作为wkhtmltopdf命令的一部分传递。这是我的命令:exec./wkhtmltopf-amd64-cookiesessionid$sessionid myprofile.php profile.pdf

$sessionID是php命令的结果:session_id

永远不会生成PDF文件。有人知道我做错了什么吗?如何让WKTHLTOPDF使用与浏览器相同的会话数据?

使用$\u COOKIE传递$\u会话数据: 在传递$会话变量的页面中,将其转换为选择任何设置变量[COOKIE或SESSION]的变量,因为wkhtmltopdf只能访问COOKIE。 而不是

$sessionID = $_SESSION['sessionid'];
做:

或:

然后在generate函数中,按如下方式传递它:

wkhtmltopdf --post BYPASS yes --cookie sessionid $sessionID ...

请注意,$\u会话的键与$\u COOKIE的键相同,并且传递给wkhtmltopdf的-COOKIE参数也相同。

您使用会话COOKIE的方法是正确的。是否将完整的URL传递给myprofile.php脚本?是。网址是。我尝试删除http://部分,添加了www。在这两种情况下,都生成了PDF。不幸的是,PDF显示时没有我传入的会话数据。实际上,没有传入任何会话。想法?正在运行的PHP生成的完整命令是什么?如果您通过浏览器访问该URL,会发生什么?如果在命令行中执行该命令,会发生什么?我也想尝试一下尽可能原始的形式:。还有,哪个PHP版本和哪个wkhtmltopdf版本?我相信其中一个问题是url本身。php命令是:execwkhtmltopdf-amd64 www.siteName.com/profile.php?action=display&id=23 profile.pdf此命令失败。当我在命令行中运行时,它也会失败。当我用&删除url的一部分时,该命令起作用。换句话说,如果url为:www.siteName.com/profile.php?action=display,则该命令有效。有没有办法让它和&一起工作?我需要捕获配置文件id。
$sessionID = !isset($_SESSION['sessionid']) ? $_COOKIE['sessionid'] : $_SESSION['sessionid'];
wkhtmltopdf --post BYPASS yes --cookie sessionid $sessionID ...