Ich möchte PHP verwenden, um eine PGP-Verschlüsselungsbefehl 'exec'. Unabhängig von der Kommandozeile bekomme ich entweder einen Fehler 64 (Parserfehler) oder 162 (Fehler während einer Codierung). So habe ich die Befehlszeile innerhalb des PHP-Programm auf diesem einfachen Fingerabdruck Anzeige reduziert, die Standbilder irrt aus:PHP exec pgp Befehl
exec("/opt/pgp/bin/pgp --fingerprint", $results);
Wenn ich „/ opt/pgp/bin/pgp --fingerprint“ in einer Befehlszeile Ich laufe bekommen "2 Schlüssel gefunden" und die erwartete Anzeige. Aber die selbe Exec unter PHP gibt mir den Parserfehler 64. Ich habe "\ n" zum Zeichenkettenbefehl versucht und das macht keinen Unterschied. Der Benutzer läuft als 'nobody' im Browser, der eine Ausführungsberechtigung für pgp hat. (Wenn PGP nicht gestartet wurde, würde ich nicht einmal den "Parserfehler" sehen.)
Gibt es etwas Besonderes, was ich tun muss, um PHP unter PHP laufen zu lassen?
Ich habe versucht, zurück gegangen, um tatsächlich eine Datendatei zu verschlüsseln. Hier ist die 'status-file' Ausgabe, die pgp erstellt. Es zeigt eindeutig einen Fehler in der letzten Zeile von 'Berechtigung verweigert' für die Datei, die ich versuche, 'test.txt' zu verschlüsseln. Das ist falsch. Ich habe der ganzen Datei die gesamte R/W zugeteilt und sie greift eindeutig darauf zu, da der Status besagt, dass der Inhalt verschlüsselt wurde. Also, wirklich ist die Frage, was ist die Erlaubnis verweigert?
Einige andere Info: Wenn ich PHP von der Kommandozeile aus gegen dieses PHP-Skript ausführen, das pgp aufruft, funktioniert es gut - die Datei wird verschlüsselt. Auch PERL führt die gleichen Befehle (mit SYSTEM()) beim Aufruf aus dem Browser. ABER, wenn der Browser verwendet wird, um dieses PHP-Skript aufzurufen, schlägt es fehl. Offensichtlich gibt es ein Berechtigungsproblem, das als "Niemand" läuft.
/export/home/pgphome/.pgp/pubring.pkr:open keyrings (1006: Schlüsselbund) /export/home/pgphome/.pgp/secring.skr:open keyrings (1007: privater Schlüsselbund) 0x221DC947: verschlüsseln (1030: Schlüssel zur Empfängerliste hinzugefügt) /export/home/eckankar/dev/www/info/test.txt:encrypt (3048: Daten verschlüsselt mit Chiffre AES-128) /export/home/eckankar/dev/www/info/test.txt: encrypt (3124: permission denied)
Als Hintergrund hier ist das Argument des PHP exec() Befehls: /opt/pgp/bin/pgp --encrypt/export/home/eckankar/dev/inc/test.txt --output /export/home/eckankar/dev/www/info/test.xxx -r mitgliedschaft --überschreiben entfernen --home-d ir /export/home/pgphome/.pgp -v --status-datei /export/home/eckankar/dev/inc/test.txt.err
Alle Ordner/Verzeichnisse in diesem Befehl haben 'rwx' gewährt zur Welt. Hier
ist, was die Statusausgabedatei aussieht, wenn die encrypt gelingt, wie es funktioniert, wenn von einer Befehlszeile (/ opt/CSW/php5/bin/php test.php), anstatt über den Browser:
PGP: Verschlüsseln (3157: aktuelle Ortszeit 2009-06-30T11: 51: 17-05: 00) /export/home/pgphome/.pgp/pubring.pkr:open Schlüsselringe (1006: öffentlicher Schlüsselring) /Export /home/pgphome/.pgp/secring.skr:open keyrings (1007: privater Schlüsselring) 0x221DC947: encrypt (1030: Schlüssel zur Empfängerliste hinzugefügt) /export/home/eckankar/dev/inc/test.txt:encrypt (3048: Daten verschlüsselt mit Chiffre AES-128) /export/home/eckankar/dev/inc/test.txt:encrypt (0: Ausgabedatei/export/home/eckankar/dev/inc/test.txt.pgp)
Haben Sie es versucht Befehlszeile? Funktioniert es wie erwartet? – karim79