2

問題があります。共有ホスティング環境で、wkhtmltopdf を呼び出して PDF ファイルを生成する PHP クラスを使用していました。サーバー攻撃により、ホストが 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。何をしているのかを理解していない限り、サーバーをセットアップすることはお勧めしませんが、知っていれば、どのプラットフォームホスティングプロバイダーでも実行できます。今日では、Amazonで月額約5ドルで小さな専用サイトを運営できます。

最後のオプションでは、PDF生成を「アウトソーシング」するオプションも購入できるため、サイトの残りの部分は現在のホストで引き続き実行されます。

于 2012-10-22T06:21:58.413 に答える
-4

バッククォート (``) を使用してみてください:

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

バックティック演算子の使用は、shell_exec() と同じです。

于 2012-10-16T10:59:07.257 に答える