まず、ページに URL を含めることができるように、ini_set('allow_url_include', "1"); を使用して構成項目を変更する必要がありますが、これを書いた後もまだ機能しません。 ?
さらに、これをオンにする良い方法が思いつきません。一時的にオンにしてから、より良い方法を考えるしかありません。その後、これをオンにすることはセキュリティに影響を及ぼしますか。 ?それとも、一般的にこのオプションを有効にした方が良いのでしょうか、それとも有効にしない方が良いのでしょうか? ?
allow_url_include この設定では、allow_url_fopen もオンにする必要があります。
allowed_url_include をコード内で設定することはできません。
allow_url_include は php.ini でのみ設定できます。本来の目的は、HTML の src=xxx.js
などの統一されたリソース配置を通じてコード リソースの共有を実現することですが、他のサーバーは http: //host/code .php は include から派生しているため、良い願いは叶いません
これにより php コード以外のファイルに php コードをインクルードすることができます
相手のプログラムの実行結果を取得するだけであれば、その場合、file_get_contents は問題ありません
allowed_url_include この設定では、allow_url_fopen もオンにする必要があります。
コードでallow_url_includeを設定できません。
allow_url_include は php.ini でのみ設定できます。本来の目的は、HTML の src=xxx.js
などの統一されたリソース配置を通じてコード リソースの共有を実現することですが、他のサーバーは http: //host/code .php は include から派生しているため、良い願いは叶いません
これにより php コード以外のファイルに php コードをインクルードすることができます
相手のプログラムの実行結果を取得するだけであれば、それなら file_get_contents で大丈夫です
まず、MVC モード システムを実装する必要があります。次に、エントリ ファイルindex.php、メイン クラス ファイル Myth.class、コンパイル済みテンプレート クラス ファイル MythTemplate.class、そしてコントローラ ファイルは A です。たとえば、デフォルトのコントローラーは次のようになります。
class IndexAction extnnds MythTemplate {
public functionindex() {
$this->assign('var1', 'value1'); > $_obj = Myth::Action('public/header', $this);
}
}
この呼び出しは、テンプレート クラスのメソッドを呼び出して、テンプレートに変数を登録します。 。テンプレートがコンパイルされると、.php ファイルが生成され、その php ファイルにアクセスできるようになります。これは問題ありません。
それでは何が問題なのでしょうか?一般的な Web ページのヘッダーとフッターは公開されているため、それらを個別に取り出して、index.html テンプレートの header.html と footer.html に導入し、テンプレート内でタグを定義する必要があるからです。この header.html を含むファイルを実装します。これは、私のページのアクセス アドレスが次の形式になっているためです:
www.fantan.com/index/index.html
これはアクセス ホーム ページなので、どうすればよいですかheader.html を含み、header.html を渡すコントローラー:
class PublicAction extends MythTemplate {
public function header() {
$this->assign('var2', ' value2');
}
}
header.html テンプレートに変数を登録するには、このページを含める必要があります。この場合、 のオプションを変更すると、前述した問題が発生します。 php.ini ファイル、実際には実装できますが、これはあまり良くないといつも感じているので、現在使用している方法は、Myth クラスに静的メソッドを追加することです。
class Myth{
public static functin Action('public/header', $_that) {
$_obj = new public();
_data = &$_that; >}
ここでの $_data 配列は、テンプレート クラスにテンプレート変数を保存する配列です。このように、2 つの異なるオブジェクトの $_data 配列が関連付けられてデータの整合性が保たれますが、このアクセスの唯一の悪い点は次のとおりです。ここ:
$_obj = Myth::Action('public/header', $this);
つまり、$this を呼び出す場合は明示的に渡す必要があると思います。ここにありますが、これより良い方法が思いつきません。 。 。 。
明確にできたかどうかはわかりませんが、今私の問題は最初の問題ではなく、先ほど述べた問題になりました。$this を明示的に渡さないが、取得して呼び出すことはできます。これを Action メソッド内でメソッドメソッドが配置されているクラスのオブジェクトを取得するにはどうすればよいですか?
allow_url_include はコード内で設定できません。
などの統一されたリソース配置を通じてコード リソースの共有を実現することですが、他のサーバーは http: //host/code .php は include から派生しているため、良い願いは叶いません
これにより php コード以外のファイルに php コードをインクルードすることができます
相手のプログラムの実行結果を取得するだけであれば、それなら file_get_contents で大丈夫です
でも実際のところ、allow_url_include の設定範囲は PHP_INI_ALL なので、ini_set() で設定できるのですが、公式マニュアルの書き方が間違っているのでしょうか
。