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

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

апаш

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

PHP

PHP 5.6.4-4ubuntu6.2 (cli) (сборка: 2 июля 2015 15:29:28) Copyright, (c) 1997-2014 PHP Group Zend Engine v2.6.0, Copyright (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 не может быть загружен, потому что"..

Update1

Через несколько часов я очень напуган! Я установил бродягу вкл. "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) (сборка: 2 2 мая 2015 г., 12:49:18) Copyright (c) 1997-2014 PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies с 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. Так что не так с этим apache..?

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

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

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

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 дважды.
  • прибыль
Другие вопросы по тегам