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

Я создал один процесс для чтения информации из файлов и сохранения в базу данных, в моей среде 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;
}

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

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

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

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

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

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

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

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


person user1352652    schedule 12.08.2015    source источник
comment
Судя по вашему упоминанию /home/ и cron, вы используете *nix. Почему вы используете ` path delimited usually used on windows instead of the /`, обычно используемый в * nix? Кроме того, каково значение $verifica прямо перед тем, как вы проверите его с помощью file_exists? Вы убедились, что путь к файлу и имя файла, на которые указывает $verifica, действительно существуют?   -  person ssnobody    schedule 12.08.2015
comment
Мужик, ты мой герой. Моя среда desenv - это окна, поэтому я использую '\'. если бы вы этого не видели, я бы не заметил. Большое спасибо   -  person user1352652    schedule 12.08.2015


Ответы (2)


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

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

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

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

;)

person Raf Zeres    schedule 12.08.2015

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

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

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

person ssnobody    schedule 12.08.2015