PHPIniDir не работает под Windows 7? - PullRequest
8 голосов
/ 16 декабря 2009

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

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

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

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

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

РЕДАКТИРОВАТЬ:

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

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

Я включаю не более одного в любой момент времени.

Ответы [ 7 ]

10 голосов
/ 09 февраля 2012

удалить последнюю косую черту:

PHPIniDir "C:\Program Files (x86)\php"
5 голосов
/ 01 июня 2010

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

3 голосов
/ 16 декабря 2009

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

  • Старая версия 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 и, если это поможет, включить их одно за другим и посмотреть, какое из них вызывает проблему.
  • Имхо, убедитесь, что вы загрузили архив PHP и не использовали автоматический установщик. По моему опыту, установщики никогда не работали хорошо. Вы всегда можете добавить две связанные с PHP директивы (PHPIniDir и LoadModule) в файл конфигурации Apache и убедиться, что каталог PHP включен в путь Windows. Да, и ошибка службы также может быть вызвана библиотекой php2apache.
  • Проверьте, включены ли каталоги Apache / PHP / MySQL в путь Windows. Вот хорошая утилита для этого: Redmond Path . Вы можете добавить в каталог следующие каталоги: Apache / bin dir, PHP dir, MySQL / bin dir. Это может помочь.
2 голосов
/ 01 марта 2011

У меня была такая же проблема, вы должны указать полный 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"
1 голос
/ 25 января 2013

У меня тоже была эта проблема, но я мог заставить 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

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

  • 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.

1 голос
/ 24 августа 2012

Мне так и не удалось выйти за пределы этой линии:

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 часов на эту проблему, я настолько разочарован, что не знаю, что это за зависимость.

0 голосов
/ 06 декабря 2017

В качестве альтернативы ответу @ 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\"

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

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

...