2016-12-20 8 views
1

Ich verwende PHP 5.2.13 auf einem Windows Server 2008 R2-Rechner (Windows 7 äquivalent).PHP OpenSSL undefinierte Konstante OPENSSL_ALGO_DSS1

Ich schreibe meistens nur, weil ich eine google dead end Suche nach der Warnung bekomme und ich versuche, etwas dafür hinzuzufügen.

ich die folgende Mitteilung/Warnung erhalten:

Verwendung von undefinierter Konstante OPENSSL_ALGO_DSS1 - angenommen 'OPENSSL_ALGO_DSS1'

openssl_verify() Parametern 4 seine lange erwartet, string

gegeben

Beim Ausführen dieser Codezeile:

return openssl_verify($data, $signature, $this->getPublicKey(), OPENSSL_ALGO_DSS1);

Offensichtlich wird die zweite Warnung durch die erste verursacht.

aber das Problem ist nicht, dass die OpenSSL-Bibliothek nicht geladen wird, wie ich die folgende Ausgabe von phpinfo haben: auf allen anderen Maschinen

OpenSSL support  enabled 
OpenSSL Version  OpenSSL 0.9.8k 25 Mar 2009 

Dies funktioniert, dass es auf getestet wurde, so Da ist etwas Maschinenspezifisches.

Der einzige Unterschied, den ich entdeckt habe, ist die folgende von phpinfo:

Registered Stream Socket Transports  tcp, udp 

vs auf Maschinen, bei denen es funktioniert:

Registered Stream Socket Transports  tcp, udp, ssl, sslv3, sslv2, tls 

Aber ich bin nicht sicher, ob das ein roter Hering oder nicht.

+0

Wie erhalten Sie den ** öffentlichen Schlüssel ** für openssl_verfiy()? –

+0

ich bin mir sicher, dass du das schon besuchst aber immernoch mit anderen typen guckst und versuche zu debuggen: http://php.net/manual/en/function.openssl-verify.php –

+0

@SoniVimal das geht über ein 'fred' von der DSA öffentlicher Schlüssel, den ich verwende. Ich gebe also eine Reihe von Dateiinhalten ein. Das hat aber nicht viel damit zu tun, dass die open_ssl-Bibliothek die Konstante 'OPENSSL_ALGO_DSS1', die Teil der Bibliothek – icc97

Antwort

0

Meine Lösung für das Problem war, PHP vollständig zu deinstallieren und das php-5.2.13-nts-x86.msi Installationsprogramm auszuführen und die OpenSSL-Bibliothek durch dort zu installieren.

Ich hatte eine manuelle Installation der OpenSSL-Bibliothek durchgeführt, anstatt das Windows-Installationsprogramm zu verwenden.

ich folgendes haben jetzt in phpinfo:

Registered PHP Streams php, file, data, http, ftp, compress.zlib, https, ftps 
Registered Stream Socket Transports  tcp, udp, ssl, sslv3, sslv2, tls 

Soweit ich sollte auch nach dem openssl installation documentation sagen, es kann nicht eine Voraussetzung sein, um den Installer installieren zu müssen verwenden. Auf anderen Maschinen hatte ich dieses Problem nicht. Das Ändern der 'Registrierten Stream Socket Transports' um ssl einzuschließen, sollte nur das Installieren der open_ssl Bibliothek und das Hinzufügen einer Zeile zu der php.ini Datei, z.B. this answer.

+1

Wenn Sie PHP trotzdem neu installieren, warum installieren Sie keine neuere Version? PHP 5.2 ist seit Jahren nicht mehr gepflegt und kann nicht für alles, was Sicherheit erfordert, vertraut werden. – GordonM

+0

@GordonM Verdammt schön. Die Software, die wir verwenden, wurde jedoch vollständig mit PHP 5.2 getestet. Um die Version zu wechseln, ist ein vollständiger Test des Systems erforderlich. – icc97