2009-12-16 8 views
8

У меня был сервер, работающий на компьютере под управлением Windows XP с использованием Apache2 с PHP и MySQL. Недавно я обновился до Windows 7 и у меня возникли проблемы с его работой. Apache работает отлично, и PHP работает, но я не могу заставить его работать с файлом php.ini.PHPIniDir сломан под окнами 7?

Когда я установил PHPIniDir в каталог с файлом php.ini, служба Apache НЕ запускается.

Когда я установил PHPIniDir в каталог с файлом NO php.ini, служба Apache действительно начинается.

Когда я уезжаю PHPIniDir, служба Apache не запускается.

Кто-нибудь нашел исправление этой проблемы? Благодаря!

EDIT:

PHPIniDir "C:\Windows" # работает (не php.ini файл)

PHPIniDir "C:\Program Files (x86)\php\" #does не работает (содержит php.ini файл)

включить максимум один в любой момент времени.

+1

Можете ли вы опубликовать конфигурационные директивы, которые работают и не работают? Есть ли у вас ошибки в журналах Apache? –

+0

D: \ Apache24 \ bin> httpd.exe -d D:/Apache24 AH00526: Ошибка синтаксиса в строке 517 из D: /Apache24/conf/httpd.conf: Неверная команда 'PHPIniDir', возможно, с ошибкой или определена модуль, не включенный в конфигурацию сервера –

ответ

5

У меня была та же проблема .. Я исправил ее. Откройте файл php.ini с помощью блокнота или любого текстового редактора. Отключите все расширение в файле php.ini. Комментируйте расширения по одному и выясните, какое расширение вызывает проблему.

3

Есть несколько причин:

  • Старая версия Apache и/или PHP. Apache 2.2.13/2.2.14, похоже, отлично работает в Windows 7, а также в PHP 5.2.11/5.3.
  • Некоторые из расширений PHP могут привести к сбою при запуске Apache. Вы можете либо проверить файлы журнала Apache, либо включить «display_startup_errors» в php.ini (когда он включен, вы можете использовать ApacheMonitor.exe для запуска или остановки службы Apache, а при возникновении ошибки оно отобразит сообщение). Вы также можете отключить все расширения PHP, и если это поможет начать их включение по одному и посмотреть, какая из них вызывает проблему.
  • Imho, убедитесь, что вы загрузили архив PHP и не использовали автоматический установщик. По моему опыту, установщики никогда не работали хорошо. Вы всегда можете добавить две директивы, связанные с PHP (PHPIniDir и LoadModule) в файл конфигурации Apache, и убедитесь, что каталог PHP включен в путь Windows. О, и ошибка службы также может быть вызвана библиотекой php2apache.
  • Проверьте, включены ли каталоги Apache/PHP/MySQL в путь Windows. Вот хорошая утилита для этого: Redmond Path. Вы можете добавить в каталог следующие каталоги: Apache/bin dir, PHP dir, MySQL/bin dir. Это может помочь.
+0

Я попытался включить ошибки, но продолжаю получать ту же ошибку - «Запрошенная операция не удалась!» – giroy

+0

В конце php.ini есть раздел, в котором есть расширения. Они выглядят так: [PHP_BZ2] расширение = php_bz2.dll [PHP_CURL] расширение = php_curl.dll Когда они все закомментированы, апач начинает нормально. Любая идея, почему это так? – giroy

+0

После некоторого тестирования, кажется, я могу включить расширения, но есть какой-то предел, я думаю, что общий размер расширения? – giroy

2

У меня была такая же проблема, вы должны указать полный URL-адрес для модуля PHP в httpd.conf.

Все гиды, которые я нашел, сказал поставить следующее:

PHPIniDir "C:/Program Files/PHP" 
LoadModule php5_module "php5apache2_2.dll" 

Когда на самом деле вам нужно:

PHPIniDir "C:/Program Files/PHP" 
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll" 
10

удалить последний слеш:

PHPIniDir "C:\Program Files (x86)\php" 
+0

Я не могу в это поверить, это действительно сработало! – Athari

+0

Укушен снова хвостовой косой чертой в 'httpd.conf' ..., спасибо –

1

Я никогда не мог выйти за эту линию:

LoadModule php5_module "C:/Program Files (x86) /PHP/php5apache2_2.dll"

Так, наконец, в отчаянии я создал новую папку C:/PHP, скопированный, что DLL в C:/PHP и изменил строку

LoadModule php5_module "C: /PHP/php5apache2_2.dll"

и в первый раз все это работало! Возможно, это просто не нравится пробелы на пути. Или, может быть, ему не нужны имена длинного пути. Не знаю. Скорее всего, это исправление относится к конкретной версии Apache и PHP, но, потратив около 20 часов на эту проблему, я настолько обескуражен, что не знаю, что это за зависимость.

1

У меня тоже была эта проблема, но я мог заставить Apache работать снова, отключив все расширения в файле php.ini (у меня была вся DLL в папке ext, но они были отключены в php.ini) Поскольку я хотел использовать все расширения php, я попытался отключить один за другим, чтобы увидеть, какие из них были сбой Apache. Я также установил PHP в C :, чтобы избежать проблем с пробелом/длинным пути. В конце концов, вот как файл httpd.conf моего Apache является, в части PHP:

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL 
PHPIniDir "C:\PHP" 
LoadModule php5_module "C:\PHP\php5apache2_2.dll" 
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL 

Кроме того, расширение, который был сбой апача было:

  • php_oci8.dll
  • php_pdo_oci.dll
  • php_pdo_oci8.dll
  • php_pdo_sqlite_external.dll
  • php_pspell.dll
  • php_sybase_ct.dll

Я действительно не знаю, что случилось с ними, хотя.

Обратите внимание, что я установил PHP с помощью установщика MSI (php-5.2.17-Win32-VC6-x86.msi), и я установил ВСЕ расширения. Я также использую Windows 7.

0

В качестве альтернативы ответу @ ar2r на удаление последней обратной косой черты вы можете написать путь, используя (вперед) слэши, и он будет работать даже с косой чертой в конце.По какой-то причине с помощью обратной косой черты в конец по пути не работает в последних версиях Windows:

# works, no slash or forward slash at the end 
PHPIniDir "C:\Program Files\PHP7" 
PHPIniDir "C:/Program Files/PHP7/" 
PHPIniDir "C:\Program Files\PHP7/" # mixing slashes and backslashes 

# doesn't works, backslash at the end 
PHPIniDir "C:\Program Files\PHP7\" 

Обратите внимание, что смешивание вперед и обратные косые работает до тех пор, как завершающий слэш не обратная косая черта.

Это относится и к другим директивам, я заметил это поведение при настройке для значков индекса каталога.

Смежные вопросы