これinclude
は、URL ではなくローカル ファイルシステム パスで動作するためです。適切な構成で HTTP を介してファイルを含めることを有効にしたとしても (これは一般的に悪い考えであり、大きなセキュリティ リスクです)、別の問題が残ります。
代わりに、構成ファイルで別の定数を定義します。
define('DIR_ROOT', dirname(__FILE__)); // DIR_ROOT points to where the config is
その後
<? include (DIR_ROOT.'/incs/header.php'); ?>
余談ですが、エスケープされていないデータを HTML 内に埋め込んではいけません。あなたの<img>
例は代わりに次のように読むべきです
<img src="<?= htmlspecialchars(SITE_ROOT); ?>/img/banner.png"/>
htmlspecialchars
の最初の 3 つの引数は常に明示的に指定する必要があるため、上記はまだ正しく記述されていないことに注意してください。これは面倒なので、実際には、適切な短い名前を持つ独自の関数で呼び出しをラップします (これは、1 文字の名前が良いアイデアである例外的なケースの 1 つです)。