Я столкнулся с проблемой, когда функция PHP выполняет сценарий PowerShell для печати файла и открытия Chrome, когда я запускаю его на локальном компьютере, но после развертывания на сервере регистрируется только успешное выполнение и печать. задание не попадает в очередь печати и Chrome не открывается.
Вот соответствующий код функции PHP:
private function saveSpoolFile($htmlContent) {
header("Content-Type: text/html; charset=UTF-8"); $logFile = $_SERVER['DOCUMENT_ROOT'] . '/spool/exec_log.txt'; $printerName = "TSC Alpha-3R-1"; $filePath = "E:\wwwroot\Sania\PrintSystem\public\spool\temp_spool_file.html";
$powershellFilePath = $_SERVER['DOCUMENT_ROOT'] . '\spool\file_spool.ps1';
$command = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File\"E:\\wwwroot\\Sania\\PrintSystem\\public\spool\\file_spool.ps1\" -printerName \"TSC Alpha-3R-1\" -filePath \"E:\\wwwroot\\Sania\\PrintSystem\\public\\spool\\temp_spool_file.html\"";
$descriptorspec = [
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
];
$process = proc_open($command, $descriptorspec, $pipes);
if (is_resource($process)) {
$output = stream_get_contents($pipes[1]);
$errorOutput = stream_get_contents($pipes[2]);
fclose($pipes[1]);
fclose($pipes[2]);
$returnCode = proc_close($process);
file_put_contents($logFile, date("Y-m-d H:i:s") . " - Output: $output\n", FILE_APPEND);
file_put_contents($logFile, date("Y-m-d H:i:s") . " - Error: $errorOutput\n", FILE_APPEND);
file_put_contents($logFile, date("Y-m-d H:i:s") . " - Return Code: $returnCode\n", FILE_APPEND);
if ($returnCode !== 0) {
echo "Command failed. Check log for details.";
} else {
echo "Command executed successfully.";
}
} else {
echo "Failed to execute command.";
file_put_contents($logFile, date("Y-m-d H:i:s") . " - Failed to execute command: $command\n", FILE_APPEND);
}
}
Что я пробовал:
Я проверил, что сервер имеет правильную конфигурацию принтера.
Я проверил политику выполнения на сервере, чтобы убедиться, что сценариям PowerShell разрешено выполнение запустить (обход ExecutionPolicy).
Журналы сценариев PHP показывают успешное выполнение, но ни одно задание не попадает в очередь печати.
Тот же сценарий PHP отлично работает на моем локальном компьютере.
Я проверил разрешения безопасности пула приложений в IIS чтобы разрешить выполнение PowerShell.
Проблема:
Скрипт успешно выполняется на моем локальном компьютере и вручную через PowerShell, но не при выполнении через функцию PHP на сервере.
В выводе отображается сообщение «Команда выполнена». успешно», но задание на печать не появляется в очереди, и Chrome не открывается должным образом.
Журналы ошибок не указывают на какие-либо сбои, а диспетчер очереди печати, похоже, работает нормально для печати вручную. вакансии.
Подробнее здесь: https://stackoverflow.com/questions/793 ... hine-but-f
Почему мой PHP-скрипт успешно выполняет PowerShell на моем локальном компьютере, но не работает на сервере? ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение