2017-06-28 4 views
2

Ich arbeite an Zend-Framework 1.12 und musste eine https Anfrage von der Anwendung machen. Ich habe es durch die folgende Weise:Kann Zertifikatsspeicher in application.ini anstelle von php.ini platziert werden

$client = new Zend_Http_Client($url); 
$client->setAdapter($adaptor); 
$client->setConfig(array('keepalive' => true)); 
$reCaptchaData = json_encode(array()); 
$client->setRawData($reCaptchaData, 'application/json'); 
$response = $client->request('POST'); 

ich Fehler wie immer:

Error in cURL request: SSL certificate problem: unable to get local issuer certificate 

gefunden, dass ich die CA-Zertifikate hinzufügen musste, habe ich heruntergeladen one und hinzugefügt, um seinen Weg zu meinem php.ini.

curl.cainfo="path" 
openssl.cafile="path" 

Es funktioniert gut.

  1. Aber kann ich das nicht zu meinem application.ini hinzufügen? Wenn ich es versuche, funktioniert es nicht.
  2. Funktioniert application.ini als eine Erweiterung von php.ini? Kann aber Module oder Zertifikate nicht laden, weil das Apache bei einem Neustart das erledigt? Apache liest die php.ini bei einem Neustart und lädt alles (ich habe den Pfad für meine php.ini in httpd.conf)?

Antwort

3

Nach PHP-Handbuch (http://php.net/manual/en/openssl.configuration.php) ist openssl.cafilePHP_INI_PERDIR veränderbar.

Das heißt, wenn Sie http://php.net/manual/en/configuration.changes.modes.php lesen, dass Sie es nicht in einem Skript Ebene ändern können:

PHP_INI_PERDIR Eintrag kann in der php.ini, .htaccess, httpd.conf oder .user.ini eingestellt werden (seit PHP 5,3)

Also, nein, Sie werden nicht application.ini diese 2 Einstellungen in Zends gesetzt sein können, aber man konnte es in einer .htaccess Datei tun über:

php_value curl.cainfo "path" 
php_value openssl.cafile "path" 

Beachten Sie, dass dies nur funktioniert, wenn PHP als Apache-Modul geladen wird.

Wenn Sie PHP-FPM verwenden, müssen Sie einen bestimmten Pool erstellen und dort die Werte ändern. In diesem Fall ist es etwas komplizierter und nur möglich, wenn Sie Zugriff auf die Serverkonfiguration haben.

application.ini ist keine Erweiterung von php.ini, da es eine eigene Syntax hat, wie das phpSettings. Präfix.

Was könnten Sie auch suchen ist .user.ini wie hier dokumentiert: http://php.net/manual/en/configuration.file.per-user.php

Damit dies funktioniert, werden Sie einen Wert für user_ini.filename in php.ini und natürlich eine zusätzlichen Benutzer INI-Datei festlegen müssen (Sie können application.ini nicht als .user.ini Datei verwenden).

+1

Danke für die Erklärung und die bereitgestellten Links. –

Verwandte Themen