只要权限够的APACHE才允许执行此操作.PHP操作文本最简单的莫过于 file_get_contentsfile_put_contents

解决方案 »

  1.   

    楼上,楼主没有说在PHP4下.
    再说.PHP4的主机已经不多了.
      

  2.   

    现在又有一个问题,
    有一个文本文件:
    virtual_trash_count = yes
    virtual_trash_name = .Trash
     
    #==The maximal size in bytes of a message, including envelope information===#
    message_size_limit = 60971520
     
    virutal_mailbox_limit_size = 80971520
    vitual_mailbox_limit_override = yes
    virtual_maildir_extended = yes
    virtual_maildir_suffix = Maildir/
    virtual_create_maildirsize = yes
    我现在需要将"message_size_limit = 60971520"中的60971520动态改写为自己需要的数字,以下为我的程序
    <?php
    $filename = 'main.cf';if (file_exists($filename)) {
        if($file=fopen($filename,'a+')){
    while(!feof($file)){
    $row = fgets($file)."<br />";
    if(strncasecmp("message_size_limit = ", $row, 21) == 0){
    echo "找到字符串<br>";
    echo $row."<br/>";
    $rowtemp = substr_replace($row, "791126", 21)."\r\n"; //字符串替换
    echo $rowtemp."<br/>";
    //将替换的字符串写入文件
    if (fwrite($file, $rowtemp) === TRUE) {
             echo "写入到文件成功!";
         }else{
    echo "不能写入到文件 $filename";
             exit;
    }
    }else{
    echo "字符串查找失败<br>";
    }   
    }
    }else{
    echo "打开文件失败";
    }
    fclose($file);//关闭文件
    }else{
        echo "文件打开失败";
    }
    ?>
    PHP文件与'main.cf'文件在同一个目录下,现在运行后的效果为,会提示
    不能写入到文件 main.cf但是当我用记事本打开文件时,却又看到在文件未尾有
    message_size_limit = 791126
    这一行记录,请问我该怎么样写,才能在文件指针找到"message_size_limit = "后,将后面的内容进行改写,
    我的思路是找到这一行,然后将整行字符串进行替换,再将替换后的字符串写入文件,
    请问程序该怎么修改
      

  3.   

    改正一下: $row = fgets($file); 这一行后面没有."<br>";
      

  4.   

    file_put_contents(preg_replace("/(message_size_limit[\s]*=[\s]*)([0-9]*)/is", "\\1"."你要改成的数字", file_get_contents("main.cf")));
    自己调试吧.我没有测....
      

  5.   

    preg_replace为用正则表达式进行匹配替换,我现在是字符串查找并替换成功了,但是我想将替换后的字符串写入到文件中,并且在文件的原地修改
      

  6.   

    <?php
    $value="33333";
    file_put_contents("main.cf",preg_replace("/(message_size_limit[\s]*=)[\s]*([0-9]*)/is", "\\1 {$value}", file_get_contents("main.cf")));
    ?>
      

  7.   

    好像不行啊,参数不匹配啊.
    file_put_contents ( string filename, string data [, int flags [, resource context]] )
    第一个参数为文件名啊,preg_replace返回的是什么东西啊,mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
    mixed这是什么类型……~~~~~~~~~~~~~~
      

  8.   

    又有问题了,呵呵 ,不好意思,麻烦大家了.
    <?php
    $filename = '/hehe.cf';
    if (file_exists($filename)){
      if($file=fopen($filename,'a+')){
        while(!feof($file)){
          $row = fgets($file);
          echo $row.'<br>';
        }
      }
      fclose($file);//关闭文件
    }
    //以上为显示文件内容部分,成功显示
    echo '<br>*******************<br>';
    $value="999999999999999999";
    if(file_exists("$filename")){
    file_put_contents("$filename",preg_replace("/(message_size_limit[\s]*=)[\s]*([0-9]*)/is", "\\1 {$value}", file_get_contents("$filename")));
    echo "值修改成功....";
    }
    ?>
    现在的问题是,在Linux下,我能够读取文件,但是不能修改文件内容,但是在Linux下,此文件('/hehe.cf')的权限分配已经最大化了,请问该怎么处理啊.....
    谢谢.