Warum führt mein PHP-Skript PowerShell erfolgreich auf meinem lokalen Computer aus, schlägt jedoch auf dem Server fehl?Php

PHP-Programmierer chatten hier
Anonymous
 Warum führt mein PHP-Skript PowerShell erfolgreich auf meinem lokalen Computer aus, schlägt jedoch auf dem Server fehl?

Post by Anonymous »

Ich stoße auf ein Problem, bei dem eine PHP-Funktion ein PowerShell-Skript ausführt, um eine Datei zu drucken und Chrome zu öffnen, wenn ich es auf meinem lokalen Computer ausführe. Nach der Bereitstellung auf dem Server werden jedoch nur die erfolgreiche Ausführung und der Druck protokolliert Der Auftrag gelangt weder in die Druckwarteschlange noch wird Chrome geöffnet.
Hier ist der relevante Code aus der PHP-Funktion:

Code: Select all

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);
}
}
Was ich versucht habe:
Ich habe überprüft, ob der Server über die richtige Druckerkonfiguration verfügt.
Ich habe die Ausführungsrichtlinie auf dem Server überprüft, um sicherzustellen, dass PowerShell-Skripte zulässig sind run (ExecutionPolicy Bypass).
Die PHP-Skriptprotokolle zeigen eine erfolgreiche Ausführung an, aber kein Auftrag gelangt in die Druckwarteschlange.
Dasselbe PHP-Skript funktioniert auf meinem lokalen Computer einwandfrei.
Ich habe die Sicherheitsberechtigungen überprüft des Anwendungspools in IIS zu Ausführung von PowerShell zulassen.
Problem:
Das Skript wird erfolgreich auf meinem lokalen Computer und manuell über PowerShell ausgeführt, jedoch nicht, wenn es über die PHP-Funktion auf dem Server ausgeführt wird.
Die Ausgabe zeigt „Befehl erfolgreich ausgeführt“. „, aber der Druckauftrag erscheint nicht in der Warteschlange und Chrome wird nicht wie erwartet geöffnet.
Die Fehlerprotokolle zeigen keinen Fehler an und der Druckspooler scheint für manuelles Drucken einwandfrei zu funktionieren Jobs.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post