我是跟着教程在学PHP, 现在刚开始就遇到问题了! 我是单机用APMSV建的环境.<? 
echo '<p>order processed at ';echo date('H:i,jS F'); echo'<p>' ;$tireqty=$_POST['tireqty'] ;
$oilqty=$_POST['oilqty'];
$spqty=$_POST['spqty'];
$find=$_POST['find'];
$address=$_POST['address'];
$DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];
echo '<p>Your Order is as Follow:</p>';
echo $tireqty.'个 物品1<br/>';
echo $oilqty.'个 物品2<br/>';
echo $spqty.'个 物品3</br>'; $totalqty=0;
$totalamount=(float)$totalqty;define ('tireprice',100);
define ('oilprice',10);
define ('spprice',4);$totalqty=$tireqty+$oilqty+$spqty ;
$totalamount= $tireqty * tireprice + $oilqty * oilprice + $spqty * spprice ;echo '这一共有:'.$totalqty; echo ' 件被订购的物品<br/>';
echo '价格总计 $:'.number_format($totalamount,2).'<br/>' ;$texrate=0.10; //假设本地税率为10%
$totalamount=$totalamount * (1+$texrate);
echo '<h2>含税总计: $</h2>'.number_format($totalamount,2).'<br/>' ;
//echo 'isset($tireqty):'.isset($tireqty).'<br />';
//echo 'isset($nothere):'.isset($nothere).'<br />';
//echo 'empty($tireqty):'.empty($tireqty).'<br />';
//echo 'empty($nothere):'.empty($nothere).'<br />';if($find=='a')
  echo '<p>客糊来源渠道: 直接访问的客户.</p>';
elseif ($find=='b')
  echo '<p>客糊来源渠道: 通过电视广告访问的客户.</p>';
elseif ($find=='c')
  echo '<p>客糊来源渠道: 通过网络广告访问的客户.</p>';
elseif ($find=='d')
  echo '<p>客糊来源渠道: 通过百度搜索引擎访问的客户.</p>';
else 
  echo '<p>未统计的客户来源</p>';
  
switch ($find)
{
case 'a' :
echo '<p>客糊来源渠道: 直接访问的客户.</p>';
break ;case 'b':
echo '<p>客糊来源渠道: 通过电视广告访问的客户.</p>';
break ;case 'c':
echo '<p>客糊来源渠道: 通过网络广告访问的客户.</p>';
break;case 'd':
echo '<p>客糊来源渠道: 通过百度搜索引擎访问的客户.</p>';
break;default;
echo '<p>未统计的客户来源</p>';
break;
}echo '<p>该用户的收货地址为: '.$address.'</p>';$outputstring = $date."\t".$tireqty." tires \t".$oilqty. "oil\t"
               .$spqty. "spark plugs\t\$" .$totalamount ."\t" .$address."\n";

$fp=fopen(" $DOCUMENT_ROOT/orders/orders.txt ",'ab');if (!fp) {echo '<p><strong>现在我们暂时无法处理您的定单,请稍后再试</strong></p></body></html>';exit;
}
fwrite ($fp,$outputstring,strlen($outputstring));
fclose ($fp);echo'<p> 提交定单成功 </p>';?>处理时 页面就会出错!错误为下:含税总计: $
349.80客糊来源渠道: 直接访问的客户.客糊来源渠道: 直接访问的客户.该用户的收货地址为: 到底是怎么搞的啊
Warning: fopen( E:/APMServ5.2.6/www/htdocs/orders/orders.txt ) [function.fopen]: failed to open stream: Invalid argument in E:\APMServ5.2.6\www\htdocs\chuli.php on line 77Warning: fwrite(): supplied argument is not a valid stream resource in E:\APMServ5.2.6\www\htdocs\chuli.php on line 87Warning: fclose(): supplied argument is not a valid stream resource in E:\APMServ5.2.6\www\htdocs\chuli.php on line 88提交定单成功 

解决方案 »

  1.   

    你看看这个文件存在么?
    var_dump(is_file('E:/APMServ5.2.6/www/htdocs/orders/orders.txt'));
      

  2.   

    E:/APMServ5.2.6/www/htdocs/orders/orders.txt 
    先确定是否有此文件
      

  3.   

    $fp=fopen(" $DOCUMENT_ROOT/orders/orders.txt ",'ab');
    注意引号里的文件名不要有空格
      

  4.   

    $fp=fopen(" $DOCUMENT_ROOT/orders/orders.txt ",'ab');
    改成:
    $fp=fopen("$DOCUMENT_ROOT/orders/orders.txt",'ab');
      

  5.   


    这个是没影响的. 我去掉了还是这个问题! 是没有ORDERS.TXT这文件. 可是我基本是按教程里的一步一步弄的, 为什么就不能写入文件!
      

  6.   

    <?php
    echo '<p>order processed at ';echo date('H:i,jS F'); echo'<p>' ;
    $tireqty=$_POST['tireqty'] ;
    $oilqty=$_POST['oilqty'];
    $spqty=$_POST['spqty'];
    $find=$_POST['find'];
    $address=$_POST['address'];
    $DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];
    echo '<p>Your Order is as Follow:</p>';
    echo $tireqty.'个 物品1<br/>';
    echo $oilqty.'个 物品2<br/>';
    echo $spqty.'个 物品3</br>';$totalqty=0;
    $totalamount=(float)$totalqty;define ('tireprice',100);
    define ('oilprice',10);
    define ('spprice',4);$totalqty=$tireqty+$oilqty+$spqty ;
    $totalamount= $tireqty * tireprice + $oilqty * oilprice + $spqty * spprice ;echo '这一共有:'.$totalqty; echo ' 件被订购的物品<br/>';
    echo '价格总计 $:'.number_format($totalamount,2).'<br/>' ;$texrate=0.10; //假设本地税率为10%
    $totalamount=$totalamount * (1+$texrate);
    echo '<h2>含税总计: $</h2>'.number_format($totalamount,2).'<br/>' ;
    //echo 'isset($tireqty):'.isset($tireqty).'<br />';
    //echo 'isset($nothere):'.isset($nothere).'<br />';
    //echo 'empty($tireqty):'.empty($tireqty).'<br />';
    //echo 'empty($nothere):'.empty($nothere).'<br />';if($find=='a')
    echo '<p>客糊来源渠道: 直接访问的客户.</p>';
    elseif ($find=='b')
    echo '<p>客糊来源渠道: 通过电视广告访问的客户.</p>';
    elseif ($find=='c')
    echo '<p>客糊来源渠道: 通过网络广告访问的客户.</p>';
    elseif ($find=='d')
    echo '<p>客糊来源渠道: 通过百度搜索引擎访问的客户.</p>';
    else
    echo '<p>未统计的客户来源</p>';switch ($find){
    case 'a' :
    echo '<p>客糊来源渠道: 直接访问的客户.</p>';
    break ; case 'b':
    echo '<p>客糊来源渠道: 通过电视广告访问的客户.</p>';
    break ; case 'c':
    echo '<p>客糊来源渠道: 通过网络广告访问的客户.</p>';
    break; case 'd':
    echo '<p>客糊来源渠道: 通过百度搜索引擎访问的客户.</p>';
    break; default:
    echo '<p>未统计的客户来源</p>';
    break;
    }
    echo '<p>该用户的收货地址为: '.$address.'</p>';
    $outputstring = $date."\t".$tireqty." tires \t".$oilqty. "oil\t"
    .$spqty. "spark plugs\t\$" .$totalamount ."\t" .$address."\n";
    //这句要改
    $fp=fopen("$DOCUMENT_ROOT/orders/orders.txt","a");if (!fp){
    echo '<p><strong>现在我们暂时无法处理您的定单,请稍后再试</strong></p></body></html>';
    exit;
    }
    fwrite ($fp,$outputstring,strlen($outputstring));
    fclose ($fp);echo'<p> 提交定单成功 </p>';
    ?>
      

  7.   

    fopen(' d:/abcdefasef.txt ', 'ab');
    会报楼主的错误,而
    fopen('d:/abcdefasef.txt', 'ab');
    却是没事的,楼主你再看看吧,就是这个空格的问题
      

  8.   


    错误变了!Warning: fopen(E:/APMServ5.2.6/www/htdocs/orders/orders.txt) [function.fopen]: failed to open stream: No such file or directory in E:\APMServ5.2.6\www\htdocs\chuli.php on line 77
      

  9.   

    var_dump(is_dir('E:\APMServ5.2.6\www\htdocs'));看看是不是文件夹,如果不是请先创建mkdir('E:\APMServ5.2.6\www\htdocs', 0777);就行了 
      

  10.   

    其实楼主在fopen()前面加上这样一句代码就行了if(!is_dir('E:\APMServ5.2.6\www\htdocs'))mkdir('E:\APMServ5.2.6\www\htdocs', 0777, true);
      

  11.   


    加上后还是这样Warning: fopen(E:/APMServ5.2.6/www/htdocs/orders/orders.txt) [function.fopen]: failed to open stream: No such file or directory in E:\APMServ5.2.6\www\htdocs\chuli.php on line 76Warning: fwrite(): supplied argument is not a valid stream resource in E:\APMServ5.2.6\www\htdocs\chuli.php on line 86Warning: fclose(): supplied argument is not a valid stream resource in E:\APMServ5.2.6\www\htdocs\chuli.php on line 87提交定单成功
      

  12.   


    你的意思对的, 路径我换了下 已经好了! 谢谢你! 
    if(!is_dir('./orders')) mkdir('./orders', 0777, true);
    这样目录有权限了, 文件也写入了!
      

  13.   


    楼主要从开始就抓代码规范与可读性问题,以避免过后的习惯不好:
    echo '<p>order processed at ';
    echo date('H:i,jS F');
    echo'<p>';$tireqty = isset($_POST['tireqty'])? $_POST['tireqty']: '';
    $oilqty = isset($_POST['oilqty'])? $_POST['oilqty']: '';
    $spqty = isset($_POST['spqty'])? $_POST['spqty']: '';
    $find = isset($_POST['find'])? $_POST['find']: '';
    $address = isset($_POST['address'])? $_POST['address']: '';$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
    echo '<p>Your Order is as Follow:</p>';
    echo $tireqty.'个物品1<br/>';
    echo $oilqty.'个物品2<br/>';
    echo $spqty.'个物品3</br>'; $totalqty = 0;
    $totalamount = floatval($totalqty);define ('tireprice', 100);
    define ('oilprice', 10);
    define ('spprice', 4);$totalqty = $tireqty + $oilqty + $spqty ;
    $totalamount = $tireqty * tireprice + $oilqty * oilprice + $spqty * spprice;echo '这一共有:'.$totalqty;
    echo ' 件被订购的物品<br/>';
    echo '价格总计 $:'.number_format($totalamount, 2).'<br/>' ;$texrate = 0.10; //假设本地税率为10%
    $totalamount = $totalamount * (1 + $texrate);
    echo '<h2>含税总计: $</h2>'.number_format($totalamount, 2).'<br/>';
    //echo 'isset($tireqty):'.isset($tireqty).'<br />';
    //echo 'isset($nothere):'.isset($nothere).'<br />';
    //echo 'empty($tireqty):'.empty($tireqty).'<br />';
    //echo 'empty($nothere):'.empty($nothere).'<br />';if($find == 'a')
      echo '<p>客糊来源渠道: 直接访问的客户.</p>';
    elseif ($find == 'b')
      echo '<p>客糊来源渠道: 通过电视广告访问的客户.</p>';
    elseif ($find == 'c')
      echo '<p>客糊来源渠道: 通过网络广告访问的客户.</p>';
    elseif ($find == 'd')
      echo '<p>客糊来源渠道: 通过百度搜索引擎访问的客户.</p>';
    else 
      echo '<p>未统计的客户来源</p>';
      
    switch ($find){ case 'a' :
    echo '<p>客糊来源渠道: 直接访问的客户.</p>';
    break ; case 'b':
    echo '<p>客糊来源渠道: 通过电视广告访问的客户.</p>';
    break ; case 'c':
    echo '<p>客糊来源渠道: 通过网络广告访问的客户.</p>';
    break; case 'd':
    echo '<p>客糊来源渠道: 通过百度搜索引擎访问的客户.</p>';
    break; default;
    echo '<p>未统计的客户来源</p>';
    break;
    }echo '<p>该用户的收货地址为: '.$address.'</p>';
    $date = date('Y-m-d H:i:s', time());
    $outputstring = $date."\t".$tireqty." tires \t".$oilqty. "oil\t".$spqty. "spark plugs\t\$" .$totalamount ."\t" .$address."\n";
    if(!is_dir("$DOCUMENT_ROOT/orders"))@mkdir("$DOCUMENT_ROOT/orders", 0777, true);
    $fp = fopen("$DOCUMENT_ROOT/orders/orders.txt",'ab');if (!$fp){
    echo '<p><strong>现在我们暂时无法处理您的定单,请稍后再试</strong></p></body></html>';exit;
    }
    fwrite($fp, $outputstring, strlen($outputstring));
    fclose($fp);echo'<p> 提交定单成功 </p>';