Я столкнулся с проблемой, когда функция 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 на моем локальном компьютере, но не работает на сервере? ⇐ Javascript
Форум по Javascript
1737101006
Anonymous
Я столкнулся с проблемой, когда функция 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 не открывается должным образом.
Журналы ошибок не указывают на какие-либо сбои, а диспетчер очереди печати, похоже, работает нормально для печати вручную. вакансии.
Подробнее здесь: [url]https://stackoverflow.com/questions/79364016/why-does-my-php-script-execute-powershell-successfully-on-my-local-machine-but-f[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия