Можно ли разместить хранилище сертификатов в файле 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"
Это прекрасно работает.
- Но не могу ли я добавить это к своему
application.ini
? Когда я пробую это там, это не работает. - Работает ли
application.ini
как расширениеphp.ini
? Но не могу загрузить модули или сертификаты, потому что это сделано Apache при перезапуске? Apache считываетphp.ini
при перезапуске и загружает все (у меня есть путь для моегоphp.ini
вhttpd.conf
)?
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
).