2

我有一个问题,我在我们的共享主机环境中使用了一个 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
                                );
                }
4

2 回答 2

3

disable_functions设置只能自行更改php.ini,这意味着它是服务器范围的并且适用于共享主机上的所有站点。

以下是您的选择:

  1. 您可以要求您当前的托管服务提供商将您的网站移动到专用机器(或 VPS)。

  2. 去别的地方,找一个没有这些限制的供应商;这需要一些时间,但可能是值得的。

  3. DIY。除非您知道自己在做什么,否则不建议设置服务器,但如果您这样做,那么任何平台托管服务提供商都会这样做;如今,您可以在亚马逊上以每月 5 美元左右的价格运行一个小型专用网站。

最后一个选项还为您购买了“外包”PDF 生成的选项,以便您的站点的其余部分仍然在您当前的主机上运行。

于 2012-10-22T06:21:58.413 回答
-4

尝试使用反引号(``):

echo `wkhtmltopdf.exe test.html test.pdf`;

反引号运算符的使用与 shell_exec() 相同。

于 2012-10-16T10:59:07.257 回答