URL を使用して curl/fopen 経由でインクルードにアクセスするということは、それらの PHP インクルードに通常の PHP スクリプトであるかのようにアクセスしていることを意味することに注意してください。.php ファイルをその特定のプレーン テキストとして直接提供するようにサーバーを構成しない限り、インクルード スクリプトは実行され、得られるのはその出力だけです。
例えば
include.php
集中型の「インクルード」サーバーで
<?php
function foo() {
echo 'hello from foo';
}
クライアント サイトのスクリプト:
<?php
include('http://includes.example.com/inculde.php');
基本的に何も含まれません。スクリプトはinclude.php
出力を生成していません。foo()
リモート サイトから PHP コードが返されなかったため、クライアント サイトで機能を利用できません。
一方、次のようなものがあるとします。
<?php
echo '<' . '?php';
?>
function foo() {
echo 'foo';
}
次に、たまたまPHPコードであるプレーンテキストを取得し、インクルードは期待どおりに機能します。
include()
ただし、リモート ファイルでは使用しないでください。これにより、悪意のあるユーザーに攻撃ベクトルの可能性が開かれます。おそらく、DNS の不具合があり、攻撃によって の IP が再マッピングされる可能性がありinclude.example.com
ます。これにより、クライアント サイトが制御下にあるサーバーからコードをロードし、すべてのクライアントが危険にさらされることになります。
おそらくネットワークの不具合があり、何らかの理由で中央のインクルード サーバーにクライアント マシンからアクセスできません。サーバーが利用できないため、クライアントのサイトは水の中で死んでいます。
基本的に、システムに単一障害点を導入しているため、障害によってすべてのクライアントが同時に停止します。まったく良いシステムではありません。