Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在正确的位置写入文件时出现问题_Php_File - Fatal编程技术网

Php 在正确的位置写入文件时出现问题

Php 在正确的位置写入文件时出现问题,php,file,Php,File,我使用PHP在PHP文件中找到一行,并通过在特定行中更改变量来写入它。请参阅下面的函数 当我自己测试它时,它工作得很好。但是,当我在主脚本中运行它时,它不能正常工作。我在=“Version\u 3\u 18110”上发现了以下内容时,它应该是$version=“version\u 3\u 18110” 此功能是否会受到主脚本上方回声的影响??作为$version传入的字符串始终是我所需要的,只是没有正确写入 发生了什么事 function edit_config_version($version

我使用PHP在PHP文件中找到一行,并通过在特定行中更改变量来写入它。请参阅下面的函数

当我自己测试它时,它工作得很好。但是,当我在主脚本中运行它时,它不能正常工作。我在=“Version\u 3\u 18110”上发现了以下内容时,它应该是
$version=“version\u 3\u 18110”

此功能是否会受到主脚本上方回声的影响??作为
$version
传入的字符串始终是我所需要的,只是没有正确写入

发生了什么事

function edit_config_version($version){
    $version = trim($version);
    $file = fopen("../includes/db-connect.php", "r") or exit("Unable to open file!");
    $count = 0;
    while(!feof($file)){
            $line = fgets($file);
            if(substr($line, 0, 10)=='$version ='){
                    $line_number = $count;
            }
            $count++;
    }

    fclose($file);

    $count = 0;

    $file = fopen("../includes/db-connect.php", "r+") or exit("Unable to open file!");

    while(!feof($file)){
            if($line_number==$count){
                    fwrite($file, '$version = "Version_'.$version.'";'."\r\n");
            }
            $line = fgets($file);
            $count++;
    }
    fclose($file);
}
db_connect.php的内容:

/*
* Date: 06/10/09
* Last Updated: 06/04/2010
*/

$serverName = 'ABS-PC';

$monitor_name = "BTSH_Mon_3_18111";

$version = "Version_3_18112";

$full_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$full_url = explode('view-report.php', $full_url);
$sitePath = $full_url[0];

$full_url = dirname('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']).'/'; 
$sitePathFolder = $full_url;

/* 
* Make sure to close the connection in the scripts
* sqlsrv_close( $conn);
*/

您是否尝试过改变:

fwrite($file, '$version = "Version_'.$version.'";'."\r\n");


您是否尝试过改变:

fwrite($file, '$version = "Version_'.$version.'";'."\r\n");


尽管这是一种使用PHPs lib的更奇特的方法,但我认为这比容易出错的字符串解析更好。如果它适合您,请尝试此方法(在PHP 5.3中测试过,但应适用于任何现代PHP版本):


虽然这是一种利用PHPs lib的更奇特的方法,但我认为这比容易出错的字符串解析更好。如果它适合您,请尝试此方法(在PHP 5.3中测试过,但应适用于任何现代PHP版本):


你想在这里做什么很有趣。能否提供db-connect.php的(示例)内容?这样可以更容易地尝试您的脚本。我建议为此使用一行sed脚本,因为您只是在搜索和替换特定的模式()。我在windows计算机上,此web应用程序将在基于windows的计算机上分发。有没有等效的命令?@Max-我已经更新了我的问题。我所要做的只是在另一个脚本中替换一个变量。有趣的是,你在这里要做的事情。能否提供db-connect.php的(示例)内容?这样可以更容易地尝试您的脚本。我建议为此使用一行sed脚本,因为您只是在搜索和替换特定的模式()。我在windows计算机上,此web应用程序将在基于windows的计算机上分发。有没有等效的命令?@Max-我已经更新了我的问题。我所要做的只是在另一个脚本中替换一个变量。这也不起作用。它添加了一个
2=“Version\u 3\u 18112”到那一行。不知道这些东西是从哪里来的。顺便说一句,在我写之前我不需要清除一行,是吗?抱歉,请尝试写($file,\$version=\$version)\$version.\“;\r\n”);那也不行。它添加了一个
2=“Version\u 3\u 18112”到那一行。不知道这些东西是从哪里来的。顺便说一句,在我写之前我不需要清除一行,是吗?抱歉,请尝试写($file,\$version=\$version)\$version.\“;\r\n”);很好,即使在我失败的主要剧本中,它也起了作用。我不知道为什么,我没有时间调查,因为我已经浪费了几个小时!谢谢你的帮助,麦克斯,我一定会妥善处理错误的很好,即使在我失败的主要剧本中,它也起了作用。我不知道为什么,我没有时间调查,因为我已经浪费了几个小时!谢谢你的帮助,麦克斯,我一定会妥善处理错误的
<?php
function edit_config_version($version){
    $version = trim($version);

    $source = file_get_contents('config.php');
    $tokens = token_get_all($source);

    $fh = fopen('config.php', 'w');

    foreach ($tokens as $token) {
        if(is_string($token)) {
            fwrite($fh, $token);
            continue;
        }

        list($id, $text) = $token;

        if($id == T_CONSTANT_ENCAPSED_STRING && strpos($text, 'Version_') === 1) fprintf($fh, '"Version_%s"', $version);
        else fwrite($fh, $text);
    }

    fclose($fh);
}

edit_config_version('2345_545454');