2011-09-11 10 views
3

私は自分のphpinfo()関数を作成する方法があるのか​​不思議でした。はphpinfo()関数を上書きしますか?

function phpinfo() { 
    // show custom list of php.ini settings here 
} 

私はこれを試しましたが、PHPの組み込み関数と同じ名前の関数であるため、解析エラーが発生します。

phpinfo()がデータ(色など)を出力する方法を変更することができますが、ページの内容をフィルタリングできる方法が見つかりませんでした。

登録時にサブドメインを作成させ、自分のファイルをホストするようにしていますが、phpinfoの出力を制限して表示させないようにしています。

PHPのインストールを完全に制御できるのは、私が専用サーバーからサイトを実行しているためです。

+0

「phpinfo」には何が表示されませんか? – icktoofay

+5

あなたのサーバー上でコードを実行する権限を与えています。 phpinfoのデータを制限しようとするのは時間の無駄です。 – gview

+0

trueですが、私はそれをカスタマイズして1つのグループに最も重要な設定を表示して、より簡単かつ迅速に見えるようにしたいと考えています。 – Eli

答えて

3

phpinfoの名前をrunkit_function_renameと変更することができます。名前を変更した後、phpinfoという名前の新しい関数を定義することができます。古い関数を呼び出す必要がある場合は、その新しい関数を呼び出すだけです。また、古い関数を呼び出す必要がない場合は、runkit_function_removeを使用して関数を削除することもできます。

これらの解決策の問題点は、名前を変更した名前を知っていれば、元の出力を得ることができるということです。最高の解決策はおそらくphpinfoが出力するものをフィルタリングするためにPHPソースを変更することです。

編集:ここでは、runkit_function_renameの使用例を示します。私はので、私はそれが動作するかどうかをテストすることはできませんが、それは可能性がありますrunkitがインストールされていない:

runkit_function_rename('phpinfo', 'old_phpinfo'); 

function phpinfo() { 
    ob_start(); 
    old_phpinfo(); 
    $data=ob_get_contents(); 
    ob_end_clean(); 
    $data=str_replace("php", "(the language you're using)", $data); 
    echo $data; 
} 
+0

thats brilliant!私は、デフォルトのphpinfo()のために自分のラッパーを作りたいと思っています。うーん、 'runkit_function_name'をどこで使うのでしょうか?素早く汚れた使用例を教えてください。 – Eli

+0

ya、im申し訳ありませんが、私はあなたがリンクを隠しているのを見たことがありませんでした!私はちょうどこれについてPHPのドキュメントを読み終えました。大変ありがとうございます。 – Eli

0

あなたができるようになる標準のphpinfo機能を無効にするには、php.iniのディレクティブdisable_functionsを使用することができますあなたはあなた自身を定義する。 http://php.net/manual/en/ini.core.phpを参照してください。

私はこれが下降する大きなルートだとは思わない。コードをサーバーにアップロードできる人を信頼できる必要があります。 phpinfo()の出力には、他の手段では簡単には得られないものがたくさんあるとは思いません。

+0

私のユーザーを検閲しようとしていない私は、自分のカスタムCMSに一致させるための独自のスタイルで出力を再作成しようとしているだけでなく、出力をナビゲートしやすくしています。重要な一般的に使用されるすべての拡張設定を上のように配置するなど。 – Eli

関連する問題