Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Systemfunktionen können einfache Befehle aufrufen, aber keine Oktavskripte ausführen?
octave ist eine GNU-Open-Source-Software für wissenschaftliches Rechnen, die mit der Matlab-Syntax kompatibel ist. Ich habe ein Octave-Skript geschrieben, am Anfang Octave als Interpreter angegeben #!/usr/bin/octave
und durch die direkte Ausführung dieses Skripts über die Befehlszeile kann das gewünschte Bild generiert werden. Das heißt, verwenden Sie ./octavedemo.m arg1 arg2...
Jetzt möchte ich PHP-Systemfunktionen wie Shell_exec() verwenden, um diesen Befehl auszuführen, aber es funktioniert nicht.
Um zu testen, ob ein Berechtigungsproblem vorliegt, habe ich versucht, mit shell_exec() einfache ls -l- und andere Befehle auszuführen, und es war erfolgreich:
<code>$test = shell_exec("ls -l"); echo $test;</code>
js kann die Ergebnisse auf der Konsole empfangen und ausdrucken, daher sollte es kein Problem mit den Ausführungsberechtigungen für Systemfunktionen geben.
Also würde ich gerne fragen, welche anderen Umstände es verursacht haben könnten?
Das Generieren von Bildern ist langsam. Dauert es also zu lange? Ich habe max_excution_time in php.ini auf 600 gesetzt, was ausreichen sollte.
Oder ist das Bild im Gegensatz zu einfachem Text zu groß, sodass es nicht in einer so großen Größe generiert werden kann?
Vielen Dank, wenn Sie etwas Erfahrung mitbringen können!
Ursprünglich habe ich ein neues Demonstrationsverzeichnis im Standard-HTML-Verzeichnis von Apache erstellt und dann PHP und andere Dateien in dieses Verzeichnis gelegt und dann den chmod 777-Vorgang für alle darin enthaltenen Dateien ausgeführt.
Versuchen Sie nun, 777-Berechtigungen für das Demonstrationsverzeichnis zu erteilen, dann wird das Problem gelöst. Dies dürfte der Grund dafür sein, dass in diesem Verzeichnis keine Dateien generiert werden können, ohne Lese- und Schreibrechte zu erteilen.
Fakten haben gezeigt, dass Sie noch klarer über die Logik jedes Schritts nachdenken müssen, um keine Zeit zu verschwenden. Vielen Dank an diejenigen, die geantwortet haben!