У меня очень специфическая проблема с запуском PHP как модуля Apache 2.2. Когда PHP работает как CGI, все работает нормально, но медленно. Вывод, который я получаю в этом случае:
Хорошая кодировка
Но при запуске PHP в качестве модуля Apache в той же среде я получаю следующий вывод:
Неправильная кодировка
Единственное отличие состоит в том, что я добавляю следующие строки в соответствующий VirtualHost в httpd.conf
SetEnv PHPRC "C:/PHP5/"
ScriptAlias /local-bin/ "C:/PHP5/"
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 "/local-bin/php-cgi.exe"
<Directory "C:/PHP5/">
Order allow,deny
Allow from all
<Files "php-cgi.exe">
Allow from all
</Files>
</Directory>
Сайт использует 2 базы данных - одну MySQL и одну MSSQL. Текст, который отображается неправильно, извлекается из базы данных MSSQL. Нет проблем с текстом, полученным из базы данных MySQL.
Есть идеи, как запустить PHP как модуль Apache и получить тот же результат, что и запуск PHP, как CGI?
Моя настройка: Apache 2.2; PHP 5.2.17; mssql PHP расширение 7.0; PHP расширение mbstring 4.4.4
Заголовки в режиме CGI, возвращаемые curl -i
HTTP/1.1 200 OK
Date: Mon, 08 Aug 2011 11:56:15 GMT
Server: Apache/2.2.16 (Win32) mod_ssl/2.2.16 OpenSSL/0.9.8o
X-Powered-By: PHP/5.2.13
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=3h4kpps0l02pecfgktonq7rjd6; path=/
Transfer-Encoding: chunked
Content-Type: text/html
Заголовки в PHP как режим модуля:
HTTP/1.1 200 OK
Date: Mon, 08 Aug 2011 12:04:16 GMT
Server: Apache/2.2.16 (Win32) mod_ssl/2.2.16 OpenSSL/0.9.8o PHP/5.2.13
X-Powered-By: PHP/5.2.13
Set-Cookie: PHPSESSID=hi9h3skbsjvpcr7usdlf36d2t7; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: text/html