Обычно я много ищу и много читаю, чтобы исправить свои проблемы, но для этой конкретной проблемы это было довольно непроизводительно.
Я запускаю 64-битный сервер Linux Ubuntu, на котором я установил стек LAMP, и имел проблемы с поддержкой libcurl, не поддерживающей SSL, в то время как двоичный файл ОС имеет поддержку SSL. PHP просто не может его прочитать. Когда я искал решения и пытался сделать следующее, чтобы включить поддержку ssl при установке PHP, у меня возникла проблема.
./configure .... --with-openssl ... .... /usr/bin/ld: ext/standard/.libs/info.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC ext/standard/.libs/info.o: could not read symbols: Bad value collect2: error: ld returned 1 exit status make: *** [libphp5.la] Error 1
Итак, это внезапно прекратилось. Я пробовал делать –enable-shared -without-pic аргументы безрезультатно.
Ладно, извините за неправильный поиск в самой SO. Ответ на эту проблему дал один из связанных вопросов. перемещение R_X86_64_32 против ошибки локального символа
Все, что мне нужно было сделать, это сделать новую установку openssl на этот раз с помощью опции enable-shared во время настройки
./config enable-shared
Затем мне пришлось сделать новую установку cURL
./configure --with-ssl=/usr/local/ssl --with-zlib
Затем мне пришлось сделать новую установку PHP
./configure .... --with-openssl --with-curl ....
.. и это сделал. Расширение PHP cURL поддерживает SSL.
В качестве более общего ответа обычно возникает проблема, когда библиотека, которую вы пытаетесь скомпилировать, ищет общую библиотеку зависимости, но сама зависимость была построена только с поддержкой статической библиотеки.
Способ устранения проблемы состоял в том, чтобы перекомпилировать зависимость с поддержкой разделяемой библиотеки, как правило, путем указания флага –enable-shared для скрипта configure.
также выполните команду,
make clean