Чтение файлов в пакетном процессе cpanel php

1

Я создал один процесс для чтения информации из файлов и сохранения в базу данных, все отлично работает в моей среде desenv, но когда я помещал файлы в свой php-хост (производственная среда), процесс прерывается при чтении файлов.

для выполнения моего процесса я создал одно задание cron на cpanel, с командой ниже:

php -q/home/<hostfolder>/batch/index.php

Когда мой процесс выполняется cron, на выходе говорят, что у него нет файлов. Нижняя часть моего кода:

private $sourceFilesFolder = "/home/<host folder>/public_html/batch/arquivos";  
private $destFilesFolder = "/home/<host folder>/public_html/batch/processados";
private $log;
private $trataException;

function __construct($log, $trataException) {
    $this->log = $log;
    $this->trataException = $trataException;
}

/**
 * Read the source folder and select only files
 * @return array - Array of valid files
 */
function selectFiles() {

    // Save the first read of ftp folder
    $listSourceFolder = scandir ( $this->sourceFilesFolder );

    // Array tho save only valid files
    $listFiles = array ();

    // read the array with ftp content and save in listFiles only files
    foreach ( $listSourceFolder as $file ) {
        $verifica = $this->sourceFilesFolder . "\\" . $file;

        // if is a file type, try save in listFiles array
        if (($file != ".") && ($file != "..") && (!is_dir ( $verifica ))) {

            // verifiy if the file exists
            if (file_exists ( $verifica )) {

                $this->log->gravaLog ( $file . " -> ADDED TO PROCESS" );
                //verificaArquivoEmUso ( $verifica );
                array_push ( $listFiles, $verifica );
            } else
                $this->log->gravaLog ( $file . "-> do not exist." );
        } else
            $this->log->gravaLog ( $file . "-> not is a file." );
    }
    return $listFiles;
}

В моей папке у меня есть два txt файла, и они появляются в переменной $ listSourceFolder, но когда я проверяю эти файлы с помощью file_exists, всегда возвращайте false.

Во-первых, я поместил свои файлы кода в папку bacth в /home/

Во втором тесте я перемещаю файлы в папку ftp и помещаю в папку bacth (то же самое из моего кода).

В третьем тесте я переместил всю папку пакета (с кодами и txt файлами) в папку public_html.

Ничего не работает, всегда одна и та же ошибка, файл не существует.

Я попытался удалить ths file_exists, если, но произойдет erros на следующем шаге алгоритма.

Я проверял права доступа к файлам, и все разрешения в порядке.

Что я могу сделать???

  • 1
    Из твоего упоминания / home / и cron я бы догадался, что ты используешь * nix. Почему вы используете ` path delimited usually used on windows instead of the /`, обычно используемый в * nix? Кроме того, каково значение $verifica перед проверкой его с помощью file_exists ? Вы убедились, что путь к файлу и имя файла, на которое указывает $verifica действительно существуют?
  • 0
    Человек, ты мой герой. Моя среда desenv - окна, поэтому я использую '\'. если бы вы этого не видели, я бы не заметил. большое спасибо
Теги:
batch-file
cron
cpanel

2 ответа

1

Вы можете попробовать три вещи.

1 - chmod 777 (Дайте разрешение, чтобы php мог читать и записывать файлы)

2 - Я знаю, что практически невозможно, что ваш сервер имеет более низкую версию php. Scandir работает только php 5 выше. Поэтому вы можете проверить это.

3 - Там есть модуль под названием "mod_speling", попробуйте включить его.

;)

  • 0
    Нет проблем. Рад, что вы решили проблему.
0

Похоже, что вы используете неверный разделитель пути для * nix.

Вы можете изменить свой код следующим образом:

$verifica = $this->sourceFilesFolder. "/". $file;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню