Заставить Apache HTTPD работать в 32-битной версии

Я запускал Apache HTTPD в 64-битном режиме, удаляя 32-битную архитектуру из двоичного файла (вместе с частями ppc). Я сделал это, чтобы сделать его более совместимым с python и mysql.

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

Ограничены ли мои возможности его зачисткой, или есть варианты запуска, о которых я не знаю.


person Doug Miller    schedule 04.11.2008    source источник


Ответы (3)


Чтобы изменить какая архитектура используется. Это сначала попробует 32-разрядную версию Intel, а затем 32-разрядную версию PPC:

% arch -i386 -ppc /usr/sbin/httpd
person Dave Dribin    schedule 04.11.2008
comment
Для стандартной установки Apache вы также можете добавить дополнительный аргумент перед httpd в список запуска. Он расположен по адресу /System/Library/LaunchDaemons/org.apache.httpd.plist, и вы можете добавить их внутрь массива для ключа ProgramArguments. - person Quinn Taylor; 03.12.2010

Этот метод сделает копию двоичного файла Apache и гарантирует, что apachectl (и, следовательно, обычная конфигурация ОС) правильно запустит 32-разрядную версию:

Сначала создайте 32-битную версию httpd:

sudo lipo -thin i386 /usr/sbin/httpd -output /usr/sbin/httpd.i386

Во-вторых, отредактируйте конфигурацию системы, чтобы она использовала новую версию вместо версии по умолчанию. Измените «/usr/sbin/httpd» на «/usr/sbin/httpd.i386»:

sudo vi /System/Library/LaunchDaemons/org.apache.httpd.plist

Наконец, перезапустите Apache:

sudo apachectl restart
person Michael Cramer    schedule 07.04.2009

Обратите внимание, что это предотвратит загрузку apache любых 64-битных общих модулей - например, если вы используете EntropyPHP, это может быть проблемой.

person Rizwan Kassim    schedule 07.11.2008