Почему мой PHP-скрипт успешно выполняет PowerShell на моем локальном компьютере, но не работает на сервере?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой PHP-скрипт успешно выполняет PowerShell на моем локальном компьютере, но не работает на сервере?

Сообщение 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 не открывается должным образом.
Журналы ошибок не указывают на какие-либо сбои, а диспетчер очереди печати, похоже, работает нормально для печати вручную. вакансии.


Подробнее здесь: https://stackoverflow.com/questions/793 ... hine-but-f
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»