PHP 取消链接不会删除 Windows 机器上的文件
PHP Unlink doesn't delete the file on Windows machine
当我使用 Mac 和 MAMP 时,命令运行良好,但在将源代码移动到 Windows 10 和 XAMPP 后,现在以下脚本不会删除文件但仅将文件的副本移动到文件夹中 (exported_files) 并重命名新文件。
<?php
session_start();
error_reporting(0);
if (isset($_POST['ok']) && ($_POST['ok'] == 1))
{
//$arrayRicevuto = implode(" ",$arrayRicevuto);
if (!isset($_SESSION['countRows']) && empty($_SESSION['countRows']))
{
$_SESSION['countRows'] = $_POST['countRows'];
}
$data = date("dmY");
$filename = "EstrazioneParziale_del_" . $data;
$estensione = ".csv";
$fileOpen = fopen($filename.$estensione, "a") or die("Impossibile aprire il file");
foreach ($_POST['arrayFiltrato'] as $fields) {
fputcsv($fileOpen, $fields);
}
fclose($fileOpen);
$_SESSION['countRows']--;
if ($_SESSION['countRows'] == 0)
{
$finalData = date("h-i-s");
$directory="exported_files/";
copy($filename.$estensione, $directory.$_SESSION['email']."_".$filename.$finalData.$estensione);
unlink('$filename.$estensione');
unset($_SESSION['countRows']);
echo $directory.$_SESSION['email']."_".$filename.$finalData.$estensione;
}
} else {
echo "Errore! ";
}
?>
有人可以给我建议吗?
非常感谢! :)
第一个问题:不要在变量周围使用单引号,因为它会将变量作为文字字符串而不是 return 给你它的值。例如:
<?php
$test = "hello";
echo '$test'; // This will print $test
echo "$test"; // This will print hello
?>
在 unlink(); 中,使用变量时根本不必使用引号。
有时系统无法找到您尝试使用 unlink()
删除的文件的位置。在这些情况下,您可以使用 realpath();,因为它将 return 指向您要删除的文件的绝对路径:
unlink(realpath($filename.$estensione));
当我使用 Mac 和 MAMP 时,命令运行良好,但在将源代码移动到 Windows 10 和 XAMPP 后,现在以下脚本不会删除文件但仅将文件的副本移动到文件夹中 (exported_files) 并重命名新文件。
<?php
session_start();
error_reporting(0);
if (isset($_POST['ok']) && ($_POST['ok'] == 1))
{
//$arrayRicevuto = implode(" ",$arrayRicevuto);
if (!isset($_SESSION['countRows']) && empty($_SESSION['countRows']))
{
$_SESSION['countRows'] = $_POST['countRows'];
}
$data = date("dmY");
$filename = "EstrazioneParziale_del_" . $data;
$estensione = ".csv";
$fileOpen = fopen($filename.$estensione, "a") or die("Impossibile aprire il file");
foreach ($_POST['arrayFiltrato'] as $fields) {
fputcsv($fileOpen, $fields);
}
fclose($fileOpen);
$_SESSION['countRows']--;
if ($_SESSION['countRows'] == 0)
{
$finalData = date("h-i-s");
$directory="exported_files/";
copy($filename.$estensione, $directory.$_SESSION['email']."_".$filename.$finalData.$estensione);
unlink('$filename.$estensione');
unset($_SESSION['countRows']);
echo $directory.$_SESSION['email']."_".$filename.$finalData.$estensione;
}
} else {
echo "Errore! ";
}
?>
有人可以给我建议吗?
非常感谢! :)
第一个问题:不要在变量周围使用单引号,因为它会将变量作为文字字符串而不是 return 给你它的值。例如:
<?php
$test = "hello";
echo '$test'; // This will print $test
echo "$test"; // This will print hello
?>
在 unlink(); 中,使用变量时根本不必使用引号。
有时系统无法找到您尝试使用 unlink()
删除的文件的位置。在这些情况下,您可以使用 realpath();,因为它将 return 指向您要删除的文件的绝对路径:
unlink(realpath($filename.$estensione));