Apache не загружает Zend Guard Loader

Я использую Ubuntu 15.04 - 64 бит со следующей настройкой:

Apache

Версия сервера: Apache / 2.4.10 (Ubuntu), Сервер построен: 24 июля 2015 г. 17:25:18

PHP

PHP 5.6.4-4ubuntu6.2 (cli) (построено: 2 июля 2015 г., 15:29:28) Авторские права, (c) 1997-2014 гг. PHP Group Zend Engine v2.6.0, Авторское право (c), 1998-2014 гг. Zend Technologies с Zend OPcache v7.0.4-dev, Copyright, (c) 1999-2014, Zend Technologies

Мой php.ini (последние 5 строк)

; Local Variables: 
; tab-width: 4 
; End
zend.loader=1
zend_extension="/var/www/extensions/ZendGuardLoader_56.so"

И да, ZendGuardLoader не загружается (это не упоминается в «php -v», а также в «phpinfo ()»). Безопасность потоков отключена! Если вам нужны другие варианты, дайте мне знать.

Что я пробовал на данный момент:

  • удалена опция "zend.loader = 1",
  • Пробовал "zend_loader.enabled = 1" вместо "zend.loader"
  • включил старую версию от ZendGuardLoader (5.5 вместо 5.6)
  • Изменил владельца и группу из обоих файлов на мою учетную запись (вместо www-data)
  • Поменял разрешения на 777, 775, 755

Также полезно знать:

Мой журнал ошибок Apache также «чистый». Если я переименую файл .so, мой Apache регистрирует это исключение. Но при текущей настройке файл доступен для чтения ... Не поймите меня неправильно, но я ожидаю, что появится сообщение типа "ZendGuardLoader не может быть загружен, потому что" ..

Обновление1

Через несколько часов мне очень страшно! Я установил бродягу вкл. «Debian 7.8» тоже все запускал и так далее. В моем ящике я установил PHP (5.4) и Apache, создал папку www в том же месте назначения и загрузил загрузчик ZendGuard 5.4. В своей настройке я сделал то же самое, что и в моей основной системе, например -> php.ini, последняя запись: "zend_extension = / vagrant / ZendGuardLoader.so"

Файл существует, также доступен для чтения и т. Д. После создания нового «info.php» («phpinfo ()») он все еще без расширения ZendGuardLoader. Команда php -v говорит в основном то же, что и основная система (различия по версии ..).

Решение для php -v

Ладно, ребята, мой разум сломался - но это не исправлено! Я сказал вам, что при проверке php -v вывод будет довольно стандартным (без ZendGuardLoader). НО (!): Php -v запускается из командной строки (cli) - поэтому я добавил "zend_extension" внутри php5 \ cli \ php.ini -> работает как шарм!

PHP 5.4.41-0 + deb7u1 (cli) (построено: 22 мая 2015 12:49:18) Авторские права (c) 1997-2014 PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Zend Guard Loader v3.3, Copyright (c) 1998-2013, Zend Technologies

Вот чего я хотел. Итак, я вызвал файл phpinfo с помощью командной строки и сохранил вывод в отдельный файл. И как я вижу, ZendGuardLoader тоже предоставляется!

Но проблема с Apache все еще существует. Строка zend_extension точно совпадает между apache2 \ php.ini и cli \ php.ini.

Так что это не проблема с разрешением, потому что у CLI нет проблем. Я думаю, что apache не работает, потому что он не загружает это менее специальное расширение ..

Новый день - новые идеи

Хорошо, ребята, вчера мы поняли, почему это не работает с CLI, но это не главная проблема. Итак, я интегрировал ioncube в CLI, а также в apache. CLI работает как шарм. Apache тоже не загружает ioncube. Так что не так с этим апачем ..?

Я пытался спровоцировать некоторые ошибки, создав новый файл в каталоге php5 \ apache2 \ conf.d \. Новый файл содержит тот же фрагмент "zend_extension = / vagrant / ZendGuardLoader.so", что и мой php5 \ apache2 \ php.ini - поэтому apache2 попытается загрузить .so дважды и выдаст ожидаемую ошибку:

Неустранимая ошибка PHP: [Zend Guard Loader] Расширение «Zend Guard Loader» не может быть загружено дважды в Unknown в строке 0

Apache пытается загрузить оба расширения. Так что я могу быть прав, если я собираюсь сказать, что apache2 загружает расширение, если оно только одно! Но похоже, что apache не может работать с расширением. Помните - php cli ("php -v" / "php -m") может!


person Tyralcori    schedule 18.08.2015    source источник


Ответы (1)


Для всех тех, кто хочет узнать решение:

После некоторой отладки Apache я обнаружил, что включение per apache2 \ php.ini у меня не работает. Итак, я создал новый файл внутри apache2 \ conf.d \ - и удалил запись внутри apache2 \ php.ini.

После перезагрузки apache2 ничего не изменилось, но phpinfo () сообщает, что расширения загружены. Перезагрузил еще раз - и, наконец, все работает. Я не уверен, что происходит со мной или apache2.

Любопытная вещь: мне пришлось дважды перезагрузить apache2 после перезапуска ВМ. Но после этого все работает идеально. Итак, ребята ..

TL; DR;

  • Создайте новый файл в apache2 \ conf.d \ и используйте тот же "zend_extension = / path"
  • Дважды перезапустите apache2.
  • Выгода
person Tyralcori    schedule 19.08.2015