Как часть некоторых сценариев автоматизации, я пишу функцию, которая запрашивает у пользователя абсолютный путь к файлу, который он хочет использовать.Проблема в том, что PHP выдает Warning: fopen("/path/to/desired/file/file.txt"): failed to open stream: No such file or directory in /path/to/my/script/script.php on line 13
, когда пользователь вставляет файл.Вот общая функция:
function askFile() {
echo "Please specify the full path to your file.\n";
$usrInput = trim(fgets(STDIN, 1024));
$usrInput = '"' . $usrInput . '"';
echo $usrInput . "\n"; // Just to test the final string.
echo is_string($usrInput) ? "It's a string.\n" : "It's not a string.\n"; // Just to confirm that the variable holds a string.
if($handle = fopen($usrInput, 'r')) {
echo "Thank you. The file is now opened.\n";
} else {
"Sorry, could not open the file for reading.\n";
}
}
askFile();
Разрешения для файла, для целей тестирования, широко открыты на 777. Когда я просто жестко кодирую абсолютный путь прямо внутри fopen()
, все работает, как ожидалось, поэтомупроблема возникает только тогда, когда ввод поступает с STDIN .