4

У меня возникли трудности с установкой Apache 2.4.7 с PHP 5.5.7 в Windows Vista с пакетом обновления 2 (SP2).

При попытке запустить Apache я получаю сообщение об ошибке:

Синтаксическая ошибка в строке 176 файла C:/Program Files/Apache/conf/httpd.conf: Невозможно загрузить C:/Program Files/PHP/php5apache2_4.dll на сервер: доступ запрещен.

Я посмотрел на связанные темы, как здесь, так и на других сайтах, но единственные проблемы, которые я могу найти, это где ошибка "Указанная процедура не найдена" или "Указанный модуль не найден", ни один из которых имеют отношение к моей проблеме.

Как вы можете видеть по ссылкам на скачивание, я использую Win32-версии Apache и PHP и поточно-ориентированную версию PHP. Я убедился, что файл C:/Program Files/PHP/php5apache2_4.dll существует, и переустановил распространяемый Visual C++ (http://www.microsoft.com/en-gb/download/details.aspx?id=30679. ; VSU_4\vcredist_x86.exe). Я также попытался переместить папки Apache и PHP за пределы Program Files, но это не решило проблему.

Поскольку я получаю сообщение об ошибке "Доступ запрещен", я предполагаю, что проблема связана с правами доступа к файлам, но я не уверен, какие разрешения нужно изменить и на что их нужно изменить. Поэтому любая помощь, которую я могу получить, будет высоко оценена.

редактировать

После некоторого тестирования кажется, что эта проблема возникает только начиная с PHP 5.5.4. Откат до 5.5.3 решает проблему.

Редактировать 2

Кажется, проблема в том, что php5ts.dll не может быть прочитан, несмотря на то, что он показывает права на чтение. Даже когда программы "запускаются от имени администратора", файл не может быть открыт (но может быть удален и переименован). Файл может быть открыт, если расширение изменено на что-то, отличное от dll или exe , и другие файлы в той же папке можно открыть, даже если переименовать в php5ts.dll (заменяя оригинал).

2 ответа2

1

Факты и наблюдения

Давайте проанализируем факты:

  1. Он работает с расширением, отличным от типичных расширений исполняемого файла / кода, таких как .dll , .exe и т.д.
  2. Он не работает с другим именем файла
  3. Это работало очень хорошо с предыдущей версией; только последняя версия имеет проблемы
  4. В безопасном режиме работает нормально
  5. Безопасный режим отключает все ненужные драйверы и сервис
  6. Не показывает замков или открытых ручек
  7. Он говорит, что access denied
  8. Его нельзя перемещать, открывать, копировать и т.д.

Анализ

Пункты 1-3 указывают, что что-то в содержимом файла вызывает проблему. Это очень похоже на антивирусную программу, которая выдает ложное срабатывание.

Пункты 4-6 указывают на какой-либо сервис или драйвер, который вызывает проблему.

технический

Программное обеспечение для обеспечения безопасности, такое как антивирусные программы, обычно должно работать на низком уровне, чтобы не допустить проникновения вредоносных программ, поэтому они используют драйверы и работают в рамках System процесса. Это препятствует тому, чтобы большинство программ могли обнаружить, что файл заблокирован программой безопасности (именно поэтому Unlocker не смог найти какие-либо открытые дескрипторы), и даже если они могут, они только показывают, что System открыла его, что не очень полезно.

Применение и объяснение

Вы сказали, что однажды установили AVG, но удалили его. Видимо AVG не удалил полностью (пропустил перезагрузку?) и поэтому его водители остались позади.

Так что теперь, когда вы обращаетесь к файлу, драйвер блокирует его для сканирования, но, поскольку остальная часть программы пропала, у него нет способа запросить у вас подозрительный файл. Если бы программа все еще была установлена, она показала бы запрос и запрос, который вы хотите сделать (или, что более вероятно, в наши дни, автоматически поместите в карантин / удалите файл, чтобы «защитить» вас). Поскольку программа исчезла, компонент драйвера находится в ожидании, сохраняя файл заблокированным.

Поскольку вы недавно удалили AVG, он, вероятно, не имеет последних определений (если есть?), Поэтому он не сможет оставить последнюю версию php5ts.dll одиночестве и выдает ложноположительный результат, блокируя таким образом файл без возможности сказать это сбить его.

AVG

Я не знаю, жаловалась ли когда-либо AVG на эту конкретную версию php5ts.dll когда она только появилась, но сейчас нет.

Кроме того, я не знаю, известно ли, что AVG имеет много ложных срабатываний, хотя я уверен, что читал это о каком-то AV-продавце; но поверхностная проверка, похоже, указывает на то, что поиск false positive имеет как минимум на 33% больше просмотров для AVG, чем у других поставщиков AV.

Совет на будущее

Эта проблема возникла из-за того, что AVG не удалилась полностью и оставила остатки. К сожалению, это слишком распространенная проблема. В будущем при удалении любого программного обеспечения, будь то антивирусные программы, драйверы / программное обеспечение принтера и т.д., Всегда проверяйте, предоставил ли поставщик какой-либо инструмент / утилиту для удаления / очистки (попробуйте разные сочетания слов, чтобы убедиться, что вы его нашли. ).

Большинство поставщиков программного обеспечения и принтеров для обеспечения безопасности, а также некоторые другие производители программного обеспечения и оборудования имеют (обычно небольшую) программу, которую вы можете загрузить и запустить, чтобы уничтожить все следы своего программного обеспечения. К сожалению, это обычно не встроено в деинсталлятор и должно быть загружено вручную с их сайта. Иногда это будет в обычных частях их сайта, иногда это будет похоронено где-то на их форумах поддержки. (Они обычно составляются из отчетов об ошибках от людей, которые нашли оставшиеся файлы, записи реестра, службы и т.д., Оставленные деинсталлятором, поэтому они являются отдельными.)

В вашем случае вы могли бы (и все еще должны) использовать «съемник» AVG.

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

0

Обычно такого рода ошибки означают, что вам не хватает зависимости, используемой php5apache2_4.dll , вероятно, представленной в PHP 5.5.4.

Чтобы проверить, какой из них отсутствует, используйте средство обхода зависимостей, которое отображает отсутствующие библиотеки DLL красным цветом. Отсутствие библиотек DLL, помеченных как "отложенная загрузка", обычно не является проблемой.

Убедитесь, что у вас нет 32-битного /64-битного несоответствия. Поскольку все находится в C:/Program Files , я предполагаю, что все программное обеспечение является 64-битным. В этом случае используйте также 64-разрядную версию Dependency Walker.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .