Joomlaのコードを見ると、インデックスの最初の行で、インストールの基本パスがdirname(__FILE__)
で定義されていることがわかります。
これはサイトに起こりうるリスクですか?インクルードの失敗などが原因で、制御されていないエラーメッセージがJoomlaディレクトリの内部パスを示している場合、それを使用してサイトへの何らかの攻撃を実行できますか?はいの場合、この機能を使用すると便利ですか?
最初にPHPエラーメッセージをユーザーに表示するべきではありません。そのため、リスクはありません。
また、サーバーでの唯一の安全対策がソースコードのあるパスを非表示にすることである場合、...まあ...ユーザーにパスを表示することで、他のリスクをより心配する必要があります。
最後に、相対パスを使用すると、セキュリティホールが増える可能性があります。例えば PHPでディレクトリトラバーサルを防止するがパスを許可する を参照)。
___FILE__
_は、実行中のスクリプトのパスを保持するネイティブグローバル変数であり、dirname(__FILE__)
はそのパスのディレクトリ部分を返します。 ___FILE__
_のパスが存在しないか無効である場合、そもそもスクリプトを呼び出すことができなかった場合、これが失敗することは絶対にありません。
一般的に言えば、PHPエラー(警告と通知を含む))がユーザーに届かないようにする必要があります。 _error_reporting
_ および _display_errors
_ 。
___DIR__
_PHP> = 5.3で使用し、それ以外の場合はdirname(__FILE__)
で使用します。
どちらも同じ出力を提供しますが、___DIR__
_はコンパイル時に評価され、高速です(または高速である必要があります)。 dirname(__FILE__)
は、実行時に評価される関数呼び出しを意味します。
_var_dump(__DIR__);
var_dump(dirname(__FILE__));
_
https://stackoverflow.com/a/2749423/2010598 で説明されているように