Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Php System() funktioniert nicht

Frage Entwicklung PHP

Mitglied: drBommel

drBommel (Level 1) - Jetzt verbinden

02.04.2011, aktualisiert 00:43 Uhr, 5930 Aufrufe, 10 Kommentare

Hallo Leute,

wie der Titel des Threads schon aussagt, geht bei mir die system() Funktion von php nicht und weiss leider nicht mehr weiter.

Zunächst ein paar Fakten:

Ich habe einen V-Server gemietet auf dem Plesk läuft und möchte hier FOP (=formatting object processor) verwenden um eine pdf-Datei zu erzeugen.
Um diesen FOP zu verwenden benötige ich allerdings eine .fo - Datei die durch den Saxon Prozessor erzeugt wird - Und hier kommen wir zum Problem.

Der Saxon funktioniert folgendermaßen:

$saxon9 ="java -jar saxon9he.jar ".xml-Datei" ".xsl-Datei";
system($saxon9);

Auf dem XAMPP auf meinem Home PC funktioniert alles wie es soll und es wird durch diesen Befehl eine .fo Datei erzeugt. Auf dem V-Server leider nicht und ich weiss nicht warum und das witzige ist, wenn ich $saxon9 ausgebe und 1:1 in die cmd eingebe wird die .fo-Datei erzeugt.

Kennt jemand das Problem oder vermutet einen Fehler ??

Nochmal zum Verständnis:

Aus der xml und xsl soll eine fo gemacht werden, anschließend wird eine pdf daraus.

xsl -----> .fo ----> pdf
xml----->

Vielen Dank für jede hilfreiche Antwort !

Gruß DrBommel
Mitglied: builder4242
02.04.2011 um 01:14 Uhr
guten abend,


ich vermute mal, dass das mit der php.ini zu tun hat weil bei xampp so gut wie alles aktiviert ist um bestmögliche kompatibilität zu gewärleisten.
Bei produktiven Webserver sind standartmäßig die meisten module deaktiviert zwecks der sicherheit.

Aber ich gehe mal davon aus das du root zugang zum server hast, was dir ermöglicht die php.ini anzupassen

klick dich am besten mal durch php.net und prüfen was da über deine funktionen steht, da wird auch meistens gleich erläuter wo du in der php.ini schauen musst

grüße
Bitte warten ..
Mitglied: dog
02.04.2011 um 01:14 Uhr
01.
<?php 
02.
error_reporting(E_ALL|E_STRICT); 
03.
ini_set('display_errors','On'); 
04.
?>
Dann reden wir weiter...
Bitte warten ..
Mitglied: drBommel
02.04.2011 um 10:09 Uhr
Zunächst mal danke für eure Antworten.

@builder4242:
ich hab in der php.ini sowohl auf dem xampp @ home als auch vom Server ein wenig gestöbert, konnte aber keine großen Unterschiede feststellen.
Auf http://www.php.net/manual/de/function.system.php hab ich ebenfalls nachgeschaut und hab lediglich:

"Hinweis: Mit aktiviertem Safe Mode können Sie nur Programme ausführen, die im Verzeichnis liegen, das mit safe_mode_exec_dir angegeben wurde. Aus praktischen Gründen ist es gegenwärtig nicht erlaubt, dass der Pfad zu einem Programm .. enthält."

gefunden. Allerdings ist bei beiden php.ini's der safe_mode deaktiviert. Ansonsten hab ich da nichts gefunden

@dog:

ich habe diese 2 Zeilen vor und nach meinem Befehl eingetippt, allerdings erscheint nach wie vor keine Fehlermeldung.

Sonst noch irgendeine Idee ?
Bitte warten ..
Mitglied: drBommel
02.04.2011 um 10:14 Uhr
ach ja, ein Comment hab ich noch auf der Seite gefunden:

So, if your system() call is failing mysteriously and giving no results, after trying the obvious (permissions, executable, etc.) considering upping:

memory_limit

in your php.ini from 8M to something larger.

der memory_limit in meiner php.ini is bei 128 mb, kann also daran auch net liegen
Bitte warten ..
Mitglied: LordGurke
02.04.2011 um 10:57 Uhr
Schau dir mal mit "which java" an, wo die Java-Binary liegt die du ausführst und gib den ausgegebenen Pfad komplett so in deinem PHP-Script an.
Wenn der Webserver die Java-Binary nicht findet oder einfach die falsche nimmt, könnte das dieses Verhalten erklären.
Bitte warten ..
Mitglied: drBommel
02.04.2011 um 11:34 Uhr
Danke für den Hinweis.

Ich hab nun den exakten Pfad für "java" eingeben - sprich C:\Program Files....\bin\java.exe -jar saxon9he.jar ".xml-Datei" ".xsl-Datei"
Da kommt der Fehler: "Der Befehl "C:\Program " ist entweder falsch geschrieben oder konnte nicht gefunden werden"

Nächste Variante:

Ich habe von den restlichen Parametern die komplette Pfade angegeben - sprich "java -jar C:\.....\saxon9he.jar C:\....\.xml-Datei C:\...\.xsl-Datei"
In der Konsole funktioniert es wieder, über php wird der system-Befehl nicht ausgeführt.

Sonst noch irgendwelche Ideen?
Bitte warten ..
Mitglied: Arano
02.04.2011 um 13:48 Uhr
Moin moin,

Darf der Webserver überhaupt auf die Java-Ausführungsdatei zugreifen bzw. in das Ziel schreiben - Zugriffsrechte.
Funktioniert der Aufruf der Funktion system() den generell überhaupt auf dem Server !?
Was gibt system() den zurück - Rückgabewerte; var_dump()

Mehr kann ich wohl auch nicht Helfen...

Ist das jetzt eigentlich ein Windows oder Linux Server !?


~Arano
Bitte warten ..
Mitglied: dog
02.04.2011 um 16:23 Uhr
"Der Befehl "C:\Program " ist entweder falsch geschrieben oder konnte nicht gefunden werden"

Anführungszeichen setzen (oder vorher chdir machen):

01.
system('"C:\\Program Files\\java\\java.exe" ...');
über php wird der system-Befehl nicht ausgeführt.

Das sollten wir erstmal prüfen.
Leg dir den Code hier als test.vbs irgendwo hin und ruf ihn mit PHP auf.
Wenn er aufgerufen wurde muss danach was in der Windows Ereignisanzeige stehen.
01.
Const EVENT_SUCCESS = 0 
02.
 
03.
Set objShell = Wscript.CreateObject("Wscript.Shell") 
04.
 
05.
objShell.LogEvent EVENT_SUCCESS, "Ich wurde aufgerufen!"
Bitte warten ..
Mitglied: drBommel
03.04.2011 um 16:49 Uhr
danke schon ma für euere Ansätze und sorry, dass ich mich nicht mehr gemeldet habe, aber bei dem Wetter sitze ich net rund um die Uhr im Haus und programmiere :P

@dog

Das mit den Anführungsstrichen hat nichts gebracht, wird weder von der Konsole noch von system() genommen.
Ich habe die test.vbs erstellt und über system(Dateipfad) ausgeführt, habe allerdings nichts in der Ereignisanzeige feststellen können.

@Arano

bezüglich der Zugriffsrechte. Das könnte womöglich sein, dass ich mit Zugriff auf den Server (via cmd) es ausführen kann, jemand außerhalb über die domain aber nicht. Wie könnte man das lösen / testen ? Wobei.....Bevor ich zu system() komme, erstelle ich bereits zwei temporäre Dateien.
Naja...Der Befehl sollte ja prinzipiel funktionieren. Haste einen Code parat der auf deinem Server funktioniert - wäre vermutlich der einfachste Test.
Rückgabewert: Ich habe system() einer Variablen übergeben und ausgeben lassen - ohne Resultat. Es wird nichts ausgegeben.
Zum Server: Es ist ein virtueller Windows Server
BS: Windows 2008

Kann es nicht vllt. doch an der php.ini liegen, wie es builder4242 bereits meinte?? Weiss jemand, was man on bzw. off schalten muss, damit es 100%ig funktioniert müsste ?? Dann könnte man die php.ini schon ma abhacken.

Danke nochmals für euere Hilfe und hoffe, es hat noch jemand eine Idee an was es liegen kann.

Gruß drBommel
Bitte warten ..
Mitglied: drBommel
09.04.2011 um 15:29 Uhr
Hey Leute,

momentan habe ich leider viel zu tun, sodass ich nur am WE zum Arbeiten am Server komme. Hier was ich heute rausgefunden habe:

Zunächst mal habe ich endlich mal einen Rückgabewert bekommen:

system($saxon9, $return);
echo ($return);

Ausgabe ist : 6

Kann jemand was damit anfangen ?? was hat das zu bedeuten ??

Dann habe ich nun richtig

Var_dump(system($saxon9)); verwendet und dabei kam folgendes raus:

string(0) ""

Kp, was das genau zu bedeuten hat - vllt., dass system keinen String zu verarbeiten hat , oder ?

Und zu guter Letzt habe ich noch versucht einen stinknormalen system() auszuführen mit folgendem Resultat:

$cmd = "date";
$output = system($cmd);

-->

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Naja...und wenn das net ma funktioniert, kann ich den gewünschten system() wohl vollens abhacken^^

Kann jemand mit diesen Informationen was anfangen ?? Danke schon ma
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Router & Routing
Transparenter Proxy funktioniert nicht? (1)

Frage von mrserious73 zum Thema Router & Routing ...

Microsoft Office
gelöst Visio 2003 auf aktuellem System (6)

Frage von ratzla zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...