在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');
}
?>
答案 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";
防止它们被解释为转义/元数据。