ホームページ >バックエンド開発 >PHPチュートリアル >ini_setを使用した設定項目変更の問題について

ini_setを使用した設定項目変更の問題について

WBOY
WBOYオリジナル
2016-06-20 12:36:48965ブラウズ

まず、ページに 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 はコード内で設定できません。

allow_url_include は php.ini でのみ設定できます。本来の目的は、HTML の src=xxx.js

などの統一されたリソース配置を通じてコード リソースの共有を実現することですが、他のサーバーは http: //host/code .php は include から派生しているため、良い願いは叶いません

これにより php コード以外のファイルに php コードをインクルードすることができます
相手のプログラムの実行結果を取得するだけであれば、それなら file_get_contents で大丈夫です
でも実際のところ、allow_url_include の設定範囲は PHP_INI_ALL なので、ini_set() で設定できるのですが、公式マニュアルの書き方が間違っているのでしょうか

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。