как обработать copy () не удалось открыть поток: нет такой файл или ошибка каталога - PullRequest
0 голосов
/ 21 февраля 2020

Я использую функцию copy () для копирования файла на принтер для печати. Вот как я это делаю.

$invoiceContent = 'Lorem ipsum dolor sit amet';
$file =  tempnam(sys_get_temp_dir(), 'print_invoice');
$handle = fopen($file, 'w');
fwrite($handle, $invoiceContent);
fclose($handle);        

sleep(1);
chmod($file, 0777);

if (!copy($file, "//localhost/printername"))
    echo "printer not found";
else
    echo "success";

Проблема в том, что когда принтер выключен, он не отображает сообщение о том, что принтер не найден, а вместо этого показывает страницу 500 ошибок. Как правильно справиться с этой ошибкой? Я попытался использовать попытку и поймать, но все равно отображается страница ошибки 500.

try {
    copy($file, "//localhost/printername")
}
catch(Exception $e) {
    echo "ERROR! Printer not found!"; // => this doesn't appear, but showed 500 page error instead.
}

Любая помощь будет высоко ценится.

...