Проблеми з Apache після оновлення до Yosemite


8

Мій веб-сервер Mac не працюватиме після оновлення до Yosemite. Коли я набираю apachectlтермінал, я отримую таке:

httpd: Syntax error on line 527 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _unixd_config\n  Referenced from: /usr/local/php5/libphp5.so\n  Expected in: /usr/sbin/httpd\n in /usr/local/php5/libphp5.so

Якщо я набираю, sudo apachectl [re]startнічого не відбувається, як би це було запущено, і я його знову набираю, він говорить, що він вже запущений. Крім того, у мене встановлено панель налаштувань веб-спільного доступу ( http://clickontyler.com/web-sharing/ ), і коли я перемикаю перемикач з "Вимкнено" на "Увімкнено", воно все одно говорить, що він вимкнений, навіть якщо перемикач знаходиться у положенні "Увімкнено" .

Які файли ви хочете / потребуєте бачити? Дійсно потрібно виправити це якнайшвидше.

Відповіді:


6

Зауважте також, що інсталятор Yosemite замінює весь /private/etc/apache2/httpd.conf файл новим файлом конфігурації Apache 2.4 за замовчуванням.

Наприклад, якщо якісь Listenдирективи були додані, вони зникнуть і їх потрібно буде знову додати. Наприклад:

Listen 127.0.0.1:81

Я знайшов свою стару конфігурацію в наступному файлі, але через відмінності від 2.2 він, ймовірно, не повинен бути скопійований безпосередньо через файл http.conf:

/private/etc/apache2/httpd.conf~предупредительно

Є посібник з оновлення за адресою: http://httpd.apache.org/docs/2.4/upgrading.html

Переконайтеся, що будь-які раніше включені додаткові конфігураційні файли все ще включені, а потім протестуйте конфігурацію за допомогою команди:

sudo apachectl configtest

Як це відповідає на питання? Вам не потрібно було б змінювати модуль php, який ви завантажуєте після оновлення Apache ...
AlxVallejo

8

Проблема виникає через те, що Yosemite встановлює останню версію Apache (2.4), тоді як у більш ранніх версіях Mac OS X використовується Apache версії 2.2

Із помилки виходить, що ви використовували не стандартну версію PHP, надану компанією Apple, а іншу версію, надану liip.ch. Якщо видалити знак #, запропонований вище Nuttyx, буде завантажено версію php від Apple (5.5.14). Якщо ви хочете продовжувати запускати версію, надану liip, вам потрібно буде перевстановити її, щоб вона належним чином завантажилася в Apache 2.4. Детальне пояснення дивіться тут: ( http://blog.liip.ch/archive/2014/06/11/php-osx-available-for-os-x-10-10-yosemite.html )

Примітка: Якщо ви використовуєте віртуальні хости, вам, можливо, доведеться дещо змінити конфігураційні файли. Зокрема, вам потрібно буде змінити наступне:

2.2 конфігурація:

Order allow,deny
Allow from all

2.4 конфігурація:

Require all granted

4

Здається , що ви можете виправити це шляхом видалення# на самого початок наступного рядка в /etc/apache2/httpd.confфайлі:

LoadModule php5_module libexec/apache2/libphp5.so

1
Це зробив це для мене!
Матьє Ріглер

1

Запуск «sudo apachectl» без аргументів показує проблему у файлах conf. У моєму випадку оновлення php виправило це.

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

Після цього Apache запустився знову, але мені довелося переконфігурувати пристрасті.


0

Незважаючи на відповідь на вищезазначене питання, існує ще одна можливість такої ж помилки, як:

/private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_XYZ.so into server: dlopen(/usr/libexec/apache2/mod_XYZ.so, 10): image not found

Це може статися, якщо ви створили символічне посилання, яке посилається в імені вище, і воно не знайдено. Для вирішення створіть символічне посилання, що забезпечує абсолютний шлях для фактичного файлу та однаковий для наданого імені файлу symlink.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.