Я пытаюсь установить стороннее расширение PHP (.so) в PHP 5.3.6-13 на Ubuntu 11.10 и использовать его в веб-среде. Документация поставщика предлагает использовать функцию dl()
для динамической загрузки библиотеки.
Когда я пытаюсь их пример кода, я считаю, что dl()
недоступен (Fatal error: call to undefined function dl ()), поскольку функция dl()
устарела в PHP 5.3. Но в php.ini есть правило конфигурации enable_dl
, а другие источники говорят, что я должен использовать dl () просто путем изменения переменных php.ini ( enable_dl=On
, safe_mode=Off
, не указанных в disable_functions
) и перезапуска апач. Когда я пытаюсь это сделать, dl()
все еще не определено.
Поэтому я вхожу в заметки об изменениях в PHP 5.3 SAPI и обнаруживаю следующее:
Функция dl () теперь отключена по умолчанию и теперь доступна только в CLI, CGI и встраивает SAPI.
Означает ли это, что dl()
не только «отключен по умолчанию» в PHP 5.3+ с использованием веб-SAPI, но на самом деле «полностью недоступен независимо от того, что я делаю даже при изменении параметров конфигурации PHP» ? Это то, что мне кажется, потому что я не могу заставить dl()
работать независимо от того, что я настраиваю.
Чтобы уточнить: я могу модифицировать php.ini и напрямую загрузить расширение, так что это не вопрос о том, как заставить расширение работать, а скорее о функции dl()
и ее состоянии в PHP 5.3+. Если он больше не доступен ни при каких обстоятельствах, я хочу сообщить поставщику, чтобы они могли обновить свою документацию. Но если это должно быть доступно, и я просто что-то пропустил, я тоже хотел бы это услышать.
Эта функция была удалена из некоторых SAPI в PHP 5.3. –
dl()
Поэтому, если у вас enable_dl
параметр enable_dl
и он все еще не работает, он отключается в используемом SAPI.
Если вы задаетесь вопросом, какие SAPI имеют в виду, то список изменений на той же странице более подробно:
Единственными SAPI, которые позволяют
dl()
являются CLI и Embed.
Вы не используете ни одно из этих двух. Вместо этого используйте Директивы по загрузке расширений, и все в порядке.