командная строка — файл существует, но возвращает & quot; система не может найти указанный файл & quot; при использовании UNC-пути

Я использую PHP, чтобы проверить, существует ли файл, а затем получить его размер.

Раньше код работал отлично, но теперь, когда мы используем путь UNC, я могу проверить, что путь существует с file(exists($filename)) но когда я пытаюсь бежать exec("getsize" . $filename, $out); он пытается запустить около минуты, а затем возвращает «Система не может найти указанный файл». Пользователь, выполняющий это, в настоящее время является администратором, в противном случае я думаю, что это проблема с разрешениями, но я не уверен, что еще может быть проблемой, если он находит файл с помощью file_exists (), но тогда exec () завершается неудачно.

Любая помощь или очки будут с благодарностью, спасибо!

Пример кода:

<?php

$filename = "\\\\server\\share\\file_path_with_folders\\3019-74 (2).zip"; //Example file

if(file_exists($filename)){
echo "File Exists: " . $filename . "\r\n";
// "File Exists: " . $filename" are getting echoed out, so it is succeeding
} else {
echo "File doesn't exist: " . $filename  . "\r\n";
}

exec("getsize" . $filename, $out); //Runs command line command
//Getting "The system cannot find the file specified" error
echo "Out: " . $out[0] . "\r\n";
//Echos "Out: " and nothing else?>

2

Решение

Если сомневаешься, беги Монитор процесса.

Серьезно, однако, вы должны следить за процессом с вашей любимой утилитой контроля доступа к файлам.

Я бы рискнул предположить, но пробел в имени файла может быть причиной вашей проблемы. Вам может понадобиться окружить $filename с набором цитат при звонке getsize,

При сборке команды для передачи в exec () вам также необходим пробел между командой и параметрами этой команды. (Этот сценарий создает эквивалент «getsizetest.txt» вместо «getsize test.txt»)

Вы должны действительно выполнить эти команды в интерактивная оболочка PHP на вашей локальной машине, если это возможно.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]