Я использую 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?>
Если сомневаешься, беги Монитор процесса.
Серьезно, однако, вы должны следить за процессом с вашей любимой утилитой контроля доступа к файлам.
Я бы рискнул предположить, но пробел в имени файла может быть причиной вашей проблемы. Вам может понадобиться окружить $filename
с набором цитат при звонке getsize
,
При сборке команды для передачи в exec () вам также необходим пробел между командой и параметрами этой команды. (Этот сценарий создает эквивалент «getsizetest.txt» вместо «getsize test.txt»)
Вы должны действительно выполнить эти команды в интерактивная оболочка PHP на вашей локальной машине, если это возможно.
Других решений пока нет …