无法使用php将.csv文件从Windows复制到Linux服务器

时间:2015-01-26 20:34:35

标签: php linux csv copy

在php中,我可以将.txt文件从我的Windows操作系统上的某个位置复制到ubuntu服务器,但出于某种原因,我无法复制.csv文件。它可能与Apparmor有关吗? 这是我的代码,使用.txt 100%工作。但是,如果我尝试使用.csv文件,它将无效。

<?php
$fileName='Test.txt';
$location="C:\Users\...my location...\Local Store";
$Thispath = str_replace('\\', '/',$location).'/';
$ThisFile = $Thispath.$fileName; 

$dir = $_SERVER['DOCUMENT_ROOT'].'/services/csv/';
copy($ThisFile, $dir.$fileName); 

if ( !file_exists($dir) ) {
 echo 'no file';
}
else{
 echo 'file exists';
 file_put_contents ($dir.'/hallo.txt', 'Goodbye File');
}
?>

1 个答案:

答案 0 :(得分:0)

在使用双引号字符串时,不要使用反斜杠来指定PHP中的路径,特别是

$foo = "This\is\a\path\not\a\string";
echo $foo;

产生

This\is\a\path
ot\a\string

请注意\n中的\not如何被解释为换行符char,而不是以字母n开头的目录名称。 PHP NO 知道路径/目录构造是什么。它只看到字符串。由于该双引号字符串包含换行符,因此您可以使用换行符。

PHP会自动将字符串-used-as-a-path中的/自动转换为本地操作系统的分隔符。只需用/指定所有路径,让PHP处理转换:

$foo = "C:/foo/bar/baz"; 

如果您使用反斜杠INSIST,那么在任何地方正确地逃避它们:

$foo = "C:\\foo\\bar\\baz";

防止它们被解释为转义/元数据。