我有一个问题,我在共享托管环境中使用PHP类,调用wkhtmltopdf生成PDF文件,由于服务器攻击主机禁用proc_open和shell_Exec以及所有可能导致问题的功能(如果被攻击者使用)。在主机禁用这些功能之前,一切正常。在我使用的PHP类中,由于禁用了proc_open函数,下面的方法不再起作用。我可以使用以下方法替代确切结果吗?任何帮助高度赞赏。
private static function _pipeExec($cmd,$input=''){
$proc=proc_open($cmd,array(0=>array('pipe','r'),1=>array('pipe','w'),2=>array('pipe','w')),$pipes);
fwrite($pipes[0],$input);
fclose($pipes[0]);
$stdout=stream_get_contents($pipes[1]);
fclose($pipes[1]);
$stderr=stream_get_contents($pipes[2]);
fclose($pipes[2]);
$rtn=proc_close($proc);
return array(
'stdout'=>$stdout,
'stderr'=>$stderr,
'return'=>$rtn
);
}
答案 0 :(得分:3)
disable_functions
设置只能在php.ini
本身更改,这意味着它是服务器范围的,适用于共享主机上的所有网站。
以下是您的选择:
您可以要求当前的托管服务提供商将您的网站转移到专用计算机(或VPS)。
去其他地方找一个没有这些限制的提供商;这需要一些时间,但可能是值得的。
DIY。建议不要设置服务器,除非您知道自己在做什么,但如果这样做,那么任何平台托管服务提供商都会这样做;现在,您可以在亚马逊上以每月约5美元的价格运营一个小型专用网站。
最后一个选项还会为您提供“外包”PDF生成选项,以便您网站的其余部分仍在您当前的主机上运行。
答案 1 :(得分:-4)
尝试使用后退反击(``):
echo `wkhtmltopdf.exe test.html test.pdf`;
使用反引号运算符与shell_exec()相同。