Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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文件重命名错误_Php - Fatal编程技术网

使用php重命名函数时出现php文件重命名错误

使用php重命名函数时出现php文件重命名错误,php,Php,出于某种原因,您正在向$a变量(然后传播到$change)添加一个“换行符”(PHP_EOL)。这会导致重命名失败,因为这不是文件名中允许的字符 基本故障可通过以下方式重现: <?php while($data = mysqli_fetch_array($result)) { $q1="insert into delinked values('".$data[0]."','".$data[1]."','".$data[2]."');"; //inserts

出于某种原因,您正在向
$a
变量(然后传播到
$change
)添加一个“换行符”(
PHP_EOL
)。这会导致重命名失败,因为这不是文件名中允许的字符

基本故障可通过以下方式重现:

<?php
    while($data = mysqli_fetch_array($result))
    { 
        $q1="insert into delinked values('".$data[0]."','".$data[1]."','".$data[2]."');"; //inserts the all the data into delinked 
        //$result1=mysqli_query($conn,$q1)or die("error");//executes query
        $a=basename($data[2]).PHP_EOL;//gets the filename
        $change="D".$a; // changes the file in (D_filename format)
        $tar="/DATA".$change;

        chdir('E:\DATA');
        rename($a,$change);
    }
?>
要解决您的问题,只需更正行:

$a = "test.tst".PHP_EOL;                  
$targ = "moved.tst".PHP_EOL;                      
rename($a, $targ);
/*
Outputs : Warning. No such file or directory
*/

我认为应该是
E:\
而不是
E://
参见@WillParky93 windows同时支持这两种功能formats@Yathishb yadava您确定这些卷存在吗?
****警告:重命名(E:/DATA/windows.rar,E:/DATA/er.php)
$a
是否在末尾包含空格,或者PHP是否添加了空格?是否有理由将
PHP_EOL
附加到
basename($data[2])。PHP_EOL
与您的问题没有直接关系,但是您的代码对SQL注入和任意代码执行都是开放的,应该在这方面进行修复。您应该将此注释添加到问题中,而不是添加到您自己的答案中。@noam确实,我单击了错误的“添加注释”链接,谢谢
$a=basename($data[2]); //gets the filename