PHP Unlink не удаляет файл на компьютере с Windows

когда я использовал 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! ";
}

?>

Может кто-нибудь дать мне предложение?

Спасибо заранее! :)

php.net/manual/en/function.error-reporting.php - error_reporting(0); не помог. Установите для захвата и отображения.
Funk Forty Niner 27.07.2018 15:58

Возможно, вы захотите потерять кавычки, поскольку это не обязательно при использовании переменных. Кроме того, переменные внутри одинарных кавычек обрабатываются как буквальные строки: unlink($filename.$estensione);. Вы также можете попробовать. Возможно, вы захотите потерять кавычки, поскольку это не обязательно при использовании переменных. Кроме того, переменные внутри одинарных кавычек обрабатываются как буквальные строки: вместо этого unlink(realpath($filename.$estensione));.

icecub 27.07.2018 16:00

У @icecub есть это для вас, я полагаю ... двойные кавычки будут обрабатывать переменные, одинарные кавычки будут рассматривать это буквально как строку со значением $ filename. $ estensione

Dammeul 27.07.2018 16:06

Как-то что-то пошло не так с моим редактированием, лол. Но вы, если все равно не работает, попробуйте unlink(realpath($filename.$estensione));

icecub 27.07.2018 16:08

@icecub Я решил проблему с помощью realpath. Хорошее предложение !!! Большой палец вверх для вас !! Я считаю этот вопрос закрытым (как я могу отметить вопрос .. закрытым? Извините, но я новичок ^^)

Emilio 27.07.2018 16:08

Не совсем уверен, как это работает с Windows 10, но подозреваю, что может быть проблема с правами доступа к файлам. Может быть, у пользователя XAMPP нет необходимых разрешений на удаление файла, или, может быть, файл настроен только на чтение или что-то в этом роде.

icecub 27.07.2018 16:11

нет нет я решил благодаря тебе :)

Emilio 27.07.2018 16:12

Хорошо, круто :)

icecub 27.07.2018 16:12

Я превращу свое предложение в ответ. Вы можете принять это, и ваш вопрос будет считаться отвеченным.

icecub 27.07.2018 16:16

ОК! Спасибо, мужик!

Emilio 27.07.2018 16:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
949
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первая проблема: не используйте одинарные кавычки вокруг переменных, так как переменная будет восприниматься как буквальная строка вместо того, чтобы возвращать вам ее значение. Например:

<?php

$test = "hello";

echo '$test'; // This will print $test
echo "$test"; // This will print hello

?>

В unlink (); вам вообще не нужно использовать кавычки при использовании переменной.

Иногда система не может найти местоположение файла, который вы пытаетесь удалить с помощью unlink(). В этих случаях вы можете использовать realpath ();, поскольку он вернет абсолютный путь к файлу, который вы пытаетесь удалить:

unlink(realpath($filename.$estensione));

Другие вопросы по теме