как заставить httpd работать с двумя разными версиями openssl - PullRequest
0 голосов
/ 13 марта 2012

Моя ОС - CentOS 6.2.Мне нужно использовать php 5.2.4, который зависит от openssl 0.9.8e.Но openssl 1.0.x поставлялся с ОС.Поэтому я построил openssl 0.9.8e.Теперь на моей ОС есть openssl 0.9.8e и php 5.2.4./opt/php5.2.4/ /opt/openssl0.9.8e/

php cli работает правильно, но когда я использовал php с apache.Httpd не запускается.Httpd был установлен из репозитория CentOS.

Проблема, похоже, в том, что Httpd использовал libmysql.so, который зависит от openssl 1.0.x.Httpd также использовал libphp5.so, который зависит от openssl 0.9.8e.

Как я могу заставить их работать вместе?

1 Ответ

0 голосов
/ 13 марта 2012
  1. С учетом того, что вы не можете надежно смешивать библиотеки разных версий в одном процессе, когда их таблицы символов вносят вклад в глобальное пространство имен (т. Е. Стандартный механизм DT_NEEDED или используя dlopen с RTLD_GLOBAL).Это означает, что вы должны либо заставить свои части httpd (включая sql) использовать openssl 0.8, либо заставить php использовать 1.0.Последнее не должно быть особенно сложным, учитывая, что с тех пор openssl мало изменился.
  2. Или вы можете запустить PHP в режиме FastCGI.Это также позволяет использовать, например, apache2-событие вместо прежнего prefork-er.Есть несколько способов справиться с этим (выбор демонов и модулей apache) - из коробки выходит php-fpm-5.3.3 + в сочетании с mod_proxy_fcgi apache-2.4 +.
...