Я пытаюсь установить стороннее расширение PHP (.so) в PHP 5.3.6-13 на Ubuntu 11.10 и использовать его в веб-среде. В документации поставщика предлагается использовать функцию dl()
для динамической загрузки библиотеки.
Когда я пробую их пример кода, я обнаруживаю, что dl()
недоступен (Неустранимая ошибка: вызов неопределенной функции dl()), поскольку функция dl()
устарела в PHP 5.3. Но в php.ini есть правило конфигурации enable_dl
и другие источники сказать, что я должен иметь возможность использовать dl(), просто изменив переменные php.ini (enable_dl=On
, safe_mode=Off
, не указанные в disable_functions
) и перезапустив apache. Когда я пытаюсь это сделать, dl()
все еще не определено.
Итак, я копаюсь в заметках об изменениях SAPI PHP 5.3 и нахожу это:
Функция dl() теперь отключена по умолчанию и теперь доступна только в CLI, CGI и встроенных SAPI.
Означает ли это, что dl()
не только "отключено по умолчанию" в PHP 5.3+ с использованием веб-API, но фактически "полностью недоступен независимо от того, что я делаю, даже с изменением конфигурации PHP варианты"? Мне так кажется, потому что я не могу заставить dl()
работать независимо от того, что я настраиваю.
Уточняю: я могу изменить php.ini и загрузить расширение напрямую, так что это не вопрос о том, как заставить работать расширение, а о функции dl()
и ее состояние в PHP 5.3+. Если он больше не доступен ни при каких обстоятельствах, я хочу сообщить об этом поставщику, чтобы он мог обновить свою документацию. Но если он должен быть доступен, и я просто что-то упускаю, я бы тоже хотел это услышать.
dl()
отключен по соображениям безопасности. Вы не хотите, чтобы новые вещи загружались в контексте процесса вашего веб-сервера;) - Или лучше :( в вашем случае, потому что вы не заставите его работать. Однако, поскольку вы можете редактировать файл ini, вы можете просто загрузить расширение - person hakre   schedule 01.09.2012