关于用ini_set修改配置项的问题

WBOY
풀어 주다: 2016-06-20 12:36:48
원래의
951명이 탐색했습니다.

首先我需要用ini_set('allow_url_include', "1");来修改下配置项来使得页面可以允许url包含,但是我这么写了之后还是没起作用,请问这个是为什么?
再就是我开启这个实在是我想不到好的方法了,只能暂时开启下回头然后再考虑好的方法,那我想问下开启这一项会对安全性有造成影响吗?或者这个选项一般是开启好些还是最好不要开启??


回复讨论(解决方案)

allow_url_include 这个设置要求 allow_url_fopen 也要开启。

allow_url_include 不能在代码中设置。只能在 php.ini 中设置
allow_url_include 的本意是通过统一资源定位来实现代码资源的共享,有如 html 的 src=xxx.js
但是对方服务器并不知道 http://host/code.php 是源于 include 的,所以美好愿望并不能实现
这能做到 include 非 php 文件中的 php 代码
如果只是为了获取对方程序的执行结果,那么 file_get_contents 也就可以了

allow_url_include 这个设置要求 allow_url_fopen 也要开启。



那个我是开着的,但是还是不行 

allow_url_include 不能在代码中设置。只能在 php.ini 中设置
allow_url_include 的本意是通过统一资源定位来实现代码资源的共享,有如 html 的 src=xxx.js
但是对方服务器并不知道 http://host/code.php 是源于 include 的,所以美好愿望并不能实现
这能做到 include 非 php 文件中的 php 代码
如果只是为了获取对方程序的执行结果,那么 file_get_contents 也就可以了



嗯,一般情况下那个是可以的,我开始也尝试了那种方法,但是还是不行,没有达到我想要的效果。现在我解决了,但是这个方法比较那个什么,我也不知道怎么讲,我把我想要的效果敲在楼下,你帮我看看我的实现方法或者你帮我看看有什么好的方法能够实现

那首先,我要实现一套MVC模式的系统,然后有一个入口文件index.php,一个主类文件Myth.class,一个模板编译类文件,MythTemplate.class,然后我的控制器文件是一个类,拿默认控制器来说是这样的:
class IndexAction extnnds MythTemplate {
      public function index() {
          $this->assign('var1', 'value1');  
          $_obj = Myth::Action('public/header', $this);
      }
}
那个调用是调用模板类的方法想模板中注册变量。。然后模板编译之后生成一个.php文件,那我直接include找个php文件这样的话就可以访问,这样是没问题的。
那问题是什么呢?就是因为一般网页中头部(header)和底部(footer)是公共的所以需要单独拿出来然后在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();
        $_obj->_data = &$_that;
   }
}
这里$_data数组是模板类中保存模板变量的数组,这样把两个不同对象中的$_data数组通过关联达到数据一致的效果,但是这个访问唯一不好的就是这里:
$_obj = Myth::Action('public/header', $this);
就是你要调用必须显式的传递$this,我觉得这里可以不用传的,但是我又想不到好点的方法。。。。

 不知道说清楚没,但是现在我的问题已经不是开始的那个,变成了刚刚提到的那个就是:不显式的传递$this,但是可以在Action方法中获取调用这个方法的方法所在类的对象怎么获取?

allow_url_include 不能在代码中设置。只能在 php.ini 中设置
allow_url_include 的本意是通过统一资源定位来实现代码资源的共享,有如 html 的 src=xxx.js
但是对方服务器并不知道 http://host/code.php 是源于 include 的,所以美好愿望并不能实现
这能做到 include 非 php 文件中的 php 代码
如果只是为了获取对方程序的执行结果,那么 file_get_contents 也就可以了

但是现实allow_url_include 的可配置范围为PHP_INI_ALL,也就是可以用ini_set()来设置,但是确实设置不了,是不是官方手册写错了
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!