Apache не загружает Xdebug, но делает это при запуске из командной строки

Я знаю, что это звучит странно, но поверьте мне, это то, что происходит. Вот мои настройки системы:

Windows7
Apache 2.2
PHP 5.2.12
Xdebug 2.0.5

У меня XDebug настроен в моем файле PHP.ini. Когда я запускаю php -m, я действительно вижу, что Xdebug загружен. Теперь, если я запустил Apache AS A SERVICE (или с помощью Apache Monitor) и запустил phpinfo(), он НЕ показывает Xdebug как загружаемый.

Однако (теперь вот сумасшедшая часть), если я иду в мой каталог bin Apache и просто запускаю httpd.exe, а затем перейдите и посмотрите на phpinfo(), Xdebug теперь отображается как загружаемый!

Кроме того, сравнивая некоторые phpinfo() при запуске через службу или по командной строке, похоже, что файл php.ini для обоих случаев одинаковый. Все выглядит одинаково, за исключением загружаемой части Xdebug.

Пожалуйста, если у вас есть идеи, мы будем очень благодарны.

Ответ 1

Как правило, существуют разные файлы конфигурации для каждого возможного способа вызова экземпляра php: HTTP/CLI и т.д. (по крайней мере, это может быть в случае с * nix)

Я бы предложил выполнить поиск в вашей системе для php * ini и посмотреть, есть ли у вас несколько файлов с разными/отсутствующими настройками Xdebug.

Ответ 2

Недавно я столкнулся с одной и той же проблемой, но мне пришлось обходить SELinux, чтобы разрешить доступ httpd к модулю xdebug.so:

chcon -v -R --type=httpd_sys_content_t /path/to/your/xdebug.so

Перезагруженный httpd и все работало, как ожидалось.

Ответ 3

У меня была аналогичная проблема с Xdebug в Windows/IIS. php -m показал модуль как загруженный, но phpinfo() этого не сделал. Оказалось, что проблема с правами доступа - как только я установил xdebug.dll, чтобы предоставить доступ для чтения анонимным пользователям, он начал работать. Я бы проверял разрешения на эту .dll, чтобы убедиться, что любой пользователь Apache работает, так как имеет доступ к нему.

Ответ 4

Возможно, это ошибка или комбинация. У меня была другая проблема (XDebug не распознавал некоторые переменные), проблема была устранена, когда я до 2.1.0.

http://xdebug.org/download.php

Ответ 5

У меня была эта проблема, и выяснилось, что она была вызвана тем, что в моем php.ini вместо обратных косых черт. Поэтому постарайтесь: C:\PHP\вн\xdebug.dll вместо С:/php/ext/xdebug.dll

Ответ 6

Майк Перселл, у вас было это ПОЧТИ правильно...

В новой Red Hat и других дистрибутивах Linux SELinux включен (отсасывает большой) и блокирует Apache порожденные дочерние элементы (например, xdebug.so) от выполнения определенных действий, например, для доступа к сети.

Таким образом, вам нужно отключить SElinux, используя:

vi /etc/selinux/config 

SELINUX=disabled

так и перезагрузитесь, это отключит SE Linux и X-Debug начнет работать... Убитый целый день из-за этого, надеюсь, что это кому-то поможет.

Это также то, как настроены серверы Amazon EC2 и AWS Linux...

Шон.