if(!file_exists("welcome.txt"))
{
die("file not found");
}
else
{
$file = fopen("welcome.txt","r");
}理论上文件不存在,浏览器应该输出这样的错误消息:file not found
可为什么我的浏览器什么也没有输出?

解决方案 »

  1.   

    哈哈哈...理论上...boss的回答更搞
      

  2.   


    这个计算机是个很老实的东西,有就有没有就没有。
    问题应该在自身环境上检查。在某些情况下,你可能想清除被缓存的信息。例如如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存。这种情况下,可以用 clearstatcache() 函数来清除被 PHP 缓存的该文件信息。必须注意的是,对于不存在的文件,PHP 并不会缓存其信息。所以如果调用 file_exists() 来检查不存在的文件,在该文件没有被创建之前,它都会返回 FALSE。如果该文件被创建了,就算以后被删除,它都会返回 TRUE 函数 unlink() 会自动清除该缓存. 
      

  3.   


    if(!file_exists("welcome.txt"))
    {
    echo "11111111111111";
    die("file not found");
    }
    else
    {
    echo "2222222222222";
    $file = fopen("welcome.txt","r");
    }
      

  4.   

    不是上面的问题,是我解决问题的逻辑错出了问题
    //smarty_function_get是写的一个smarty插件,向前台输出数据,前台输出数据如下:Array ( [model] => news [condition] => cate=1 [var] => news )
    value:model
    value:condition
    value:var//前台代码
    /*{include file='header.html'}
     *{get mode='news' condition='cate=1' var='news'}
     *<ul>
     *{foreach from=$news item=v}
     *<li>{$v.title}</li>
     *{/foreach}
     *</ul>
     *{include file='footer.html'}
     */function smarty_function_get($params,$template){
    $must = array('model','condition','var');
    $maybe = array('order','limit');print_r($params); 
    //
    //Array ( [model] => news [condition] => cate=1 [var] => news ) 
    echo "<br />";foreach($must as $v)
    {
      echo "value:".$v."<br />";
    }/*value:model
     *value:condition
     *value:var
     */
    foreach($must as $v){
    if(!array_key_exists($v,$params)){
      echo "the var $v must be given";}
    }
    $modelName = $params['model'].Model;
    $model     = new $modelName;
    $row = $model->getAll($params['condition'],$params['order'],$params['limit']);
    $template->assign($params['var'],$row);}如果把上面代码中的
    echo "the var $v must be given"; 改为 die("the var $v must be given"); 
    应该有两种情况
    1,原样输出
    2,报错:the var $v must be given  //$v可变可现在的问题是什么都没有输出,也不报错
      

  5.   

    换了问题啦?
    print_r($params);  
    //Array ( [model] => news [condition] => cate=1 [var] => news )  $must = array('model','condition','var');对于
    foreach($must as $v){
      if(!array_key_exists($v,$params)){
        echo "the var $v must be given";
    }$must 的所有元素都以关联键的形式出现在 $params 中
    所以 echo "the var $v must be given"; 不会被执行
      

  6.   

    smarty_function_get()是一个smarty插件Array ( [model] => news [condition] => cate=1 [var] => news )   是print_r($params);从前台获取数据后输出的结果下面是前台代码//前台代码
    /*{include file='header.html'}
     *{get mode='news' condition='cate=1' var='news'}
     *<ul>
     *{foreach from=$news item=v}
     *<li>{$v.title}</li>
     *{/foreach}
     *</ul>
     *{include file='footer.html'}
     */并且已经测试
    foreach($must as $v){
      if(!array_key_exists($v,$params)){
      echo "the var $v must be given";
    }
    可以运行 例如把前台代码中的 mode='news' 去掉后,前台输出代码:
    Array ( [condition] => cate=1 [var] => news )
    value:model
    value:condition
    value:var
    the var model must be given 
    但是如果把上面代码中的
    echo "the var $v must be given"; 改为 die("the var $v must be given");  就又什么也不输出了