Можно ли разместить хранилище сертификатов в файле application.ini вместо php.ini


Я работаю над Zend-Framework 1.12 и должен был сделать запрос https из приложения. Я сделал это следующим образом:

$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');

Я получал такие ошибки, как:

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

Обнаружил, что мне нужно добавить сертификаты центра сертификации, я загрузил один и добавил его путь к моему php.ini.

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

Это прекрасно работает.

  1. Но не могу ли я добавить это к своему application.ini? Когда я пробую это там, это не работает.
  2. Работает ли application.ini как расширение php.ini? Но не могу загрузить модули или сертификаты, потому что это сделано Apache при перезапуске? Apache считывает php.ini при перезапуске и загружает все (у меня есть путь для моего php.ini в httpd.conf)?
Author: jww, 2017-06-28

1 answers

В соответствии с руководством PHP (http://php.net/manual/en/openssl.configuration.php), openssl.cafile является PHP_INI_PERDIR изменяемым.

Это означает, что если вы прочитаете http://php.net/manual/en/configuration.changes.modes.php , что вы не можете изменить его на уровне сценария:

Запись PHP_INI_PERDIR может быть установлена в php.ini, .htaccess, httpd.conf или .user.ini (начиная с PHP 5.3)

Итак, нет, вы не сможете установить эти 2 параметра в application.ini Zend, но вы могли бы сделать это в файле .htaccess с помощью:

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

Имейте в виду, что это будет работать только в том случае, если PHP загружен как модуль Apache.

Если вы используете PHP-FPM, вам нужно будет создать определенный пул и изменить там значения. В данном случае это немного сложнее и выполнимо только в том случае, если у вас есть доступ к конфигурации сервера.

application.ini не является расширением php.ini, так как у него есть свой собственный синтаксис, такой как префикс phpSettings..

То, что вы также могли бы найти, это .user.ini, как описано здесь: http://php.net/manual/en/configuration.file.per-user.php

Для того, чтобы это работало, вам нужно будет установить значение user_ini.filename в php.ini и, конечно, дополнительный пользовательский ini-файл (вы не можете использовать application.ini в качестве файла .user.ini).

 3
Author: Capsule, 2017-06-28 23:13:13