Компиляция PHP 5.3.3 из исходного кода в Apache - PullRequest
1 голос
/ 07 августа 2010

Только что скомпилирован 5.3.3 из исходного кода (win32). Попытка протестировать некоторые вещи header (), но похоже, что они не будут работать с CLI sapi. Любые хорошие документы по размещению вашего скомпилированного исходного кода в apache в качестве модуля, как я обычно делал с предварительно скомпилированным модулем.

В основном мой тест был бы от CLI

php -r "header('Content-Type: text/plain', true, 404); var_dump(headers_list());"

Я получаю пустой массив из headers_list (), поэтому мне нужно перевести этот встроенный источник в apache, чтобы я получил ответ от headers_list ().

Заранее спасибо, ребята.

------- ОБНОВЛЕНИЕ ------

Настроить команду, но еще нет apache? http://pastebin.com/qhFVR8A3:

E:\phpsdk\bin\php53dev\vc9\x86\php5.3.3>configure --disable-all --enable-cli --enable-apache2-2handler --enable-apache2-2filter

Enabled SAPI:
-------------
| Sapi Name |
-------------
| cli       |
-------------

----- 2-е ОБНОВЛЕНИЕ ----

Скачал apache, вставил его в ../apache и попробовал следующую команду, но не может найти заголовки.

http://pastebin.com/XyrzuZvu:

E:\phpsdk\bin\php53dev\vc9\x86\php5.3.3>
configure --disable-all --enable-cli --enable-apache2-2handler=../apache --enable-apache2-2filter --enable-cgi

---- 3-е обновление ---

Enabled SAPI:
--------------------
| Sapi Name        |
--------------------
| apache2_2filter  |
| apache2_2handler |
| cgi              |
| cli              |
--------------------

I have it working now.
E:\phpsdk\bin\php53dev\vc9\x86\php5.3.3>configure --disable-all --enable-cli --enable-apache2-2handler --enable-apache2-2filter --enable-cgi --with-extra-includes=E:\phpsdk\bin\php53dev\vc9\x86\apache\include --with-extra-libs=E:\phpsdk\bin\php53dev\vc9\x86\apache\lib

Спасибо за ссылку

Ответы [ 2 ]

2 голосов
/ 07 августа 2010

PHP cli SAPI на самом деле не предназначен для отправки заголовков HTTP;его назначение - использовать из командной строки.

Если вы хотите использовать PHP с Apache, вы должны скомпилировать модуль Apache SAPI или CGI SAPI.

Чтобы скомпилировать модуль Apache 2.2вы должны иметь библиотеки Apache и включать каталоги в% LIB% и% INCLUDE% соответственно и использовать:

--enable-apache2-2handler

Обратите внимание, что вы идете по маршруту модуля Apache, вы должны скомпилировать его с той же версиейбиблиотека времени выполнения C, используемая двоичными файлами Apache.Причина в том, что PHP должен иметь возможность выделять память и передавать эти указатели в Apache, чтобы он освободил их и наоборот, и чтобы это происходило правильно, версии должны быть одинаковыми.Так, например, если вы скомпилировали (или скачали откуда-то) Apache, скомпилированный с Visual C ++ 9, вы должны использовать Visual C ++ 9 для компиляции PHP.

1 голос
/ 07 августа 2010

Выводов должно быть намного больше, чем несколько строк, которые вы опубликовали на http://pastebin.com/qhFVR8A3
Скорее всего, появилось сообщение Could not find apache2.2 libraries/headers, означающее, что сценарию конфигурации не удалось найти хотя бы один из следующих файлов:

  • httpd.h
  • libhttpd.lib
  • libapr-1.lib
  • libaprutil-1.lib

Либо скопируйте эти файлы в путь / библиотеку php-build, либо используйте --with-extra-includes и --with-extra-libs, чтобы указать на соответствующие каталоги.

...