搜索了一番,发现全都说这二个的区别是:
1,在引用不存在文件的时候require是报错误,脚本停止运行,include只是报警告,程序继续运行。
2,require是非条件引用,include是条件引用,即如果写在if或for里,无论是否会执行require,都会无条件地引用,而include只有运行include才引用文件。关于第一点,测试是这样的。
但第二点!无论我怎么测试,二者结果完全一样,都感觉是非条件引用,是不是与PHP版本有关,我的是php 5.0.51b。
大家可以去测试测试,如:
if(false){
    require 'notexist.php';//不存在的文件
    require 'error.php';//有PHP语法错误的文件
    require 'fn.php';//fn.php 里有个函数fn()
}
echo fn();
//运行结果是只报fn不存在的错误,不会报notexist.php文件不存在和error.php文件有语法错的错误,说明if里的二个文件根本没有引用。
或者是我理解require的非条件引用有误?那请提供一代能说明非条件引用的代码。

解决方案 »

  1.   

    我想问下,包含文件你确定执行了?if(false) = if(fasle = true)?你认为if会向下执行,另外你把正确的FN文件删除,包含一个正常文件看可以包含吗?
      

  2.   

    看了官方说明,想结贴了!搜索出来的结果,要不是用的4.0的版本,要不就是没做测试忽悠人的!
    You can insert the content of one PHP file into another PHP file before the server executes it, with the include() or require() function.The two functions are identical in every way, except how they handle errors:include() generates a warning, but the script will continue execution
    require() generates a fatal error, and the script will stopIt is recommended to use the require() function instead of include(), because scripts should not continue after an error.
      

  3.   

    能想到的情况都测试了。。require 和 include完全一样,除了报错上。
      

  4.   

    手册这样写:
    =========================
    Note: 在 PHP 4.0.2 之前适用以下规则:require() 总是会尝试读取目标文件,即使它所在的行根本就不会执行。条件语句不会影响 require()。
    =========================你是php5喔……
      

  5.   

    兄弟语法搞错了吧
    if(false){
      都if(false)了,这里面还能执行吗???
      require 'notexist.php';//不存在的文件
      require 'error.php';//有PHP语法错误的文件
      require 'fn.php';//fn.php 里有个函数fn()
    }
      

  6.   


    楼主是测试在逻辑不执行的情况下,require是否还执行,将文件包含起来
    关于require(_once)和include(_once)的一些认识: 在PHP4和以前的版本是这样的:require  是 在 php 执行之前进行 载入操作,  所以一旦错误 就编译不通过, 出致命错误;include 是 在php 执行时进行载入操作,  所以就是出错也是把错误显示一下而已;但PHP4之后就是现在的样子了,也就是两者在报错级别上不同之外,其他功能完全一致。