Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP作为Apache模块的编码不正确_Php_Encoding_Character Encoding_Module_Cgi - Fatal编程技术网

使用PHP作为Apache模块的编码不正确

使用PHP作为Apache模块的编码不正确,php,encoding,character-encoding,module,cgi,Php,Encoding,Character Encoding,Module,Cgi,我在将PHP作为Apache2.2模块运行时遇到了非常具体的问题。当PHP作为CGI运行时,一切正常,但速度较慢。在这种情况下,我得到的输出是: 但是,当在同一环境中以Apache模块的形式运行PHP时,我得到以下输出: 唯一的区别是,我在httpd.conf中的适当VirtualHost中添加了以下行 SetEnv PHPRC "C:/PHP5/" ScriptAlias /local-bin/ "C:/PHP5/" AddHandler application/x-httpd-php5

我在将PHP作为Apache2.2模块运行时遇到了非常具体的问题。当PHP作为CGI运行时,一切正常,但速度较慢。在这种情况下,我得到的输出是:

但是,当在同一环境中以Apache模块的形式运行PHP时,我得到以下输出:

唯一的区别是,我在httpd.conf中的适当VirtualHost中添加了以下行

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>
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
如何将PHP作为Apache模块运行并获得与将PHP作为CGI运行相同的输出

通常,输出不会因模块类型而不同,而是因配置而不同。只要在SAPI类型之间保持相同的配置,就完成了

该网站使用两个数据库-一个MySQL和一个MSSQL。错误显示的文本从MSSQL数据库中检索


看起来从MSSQL检索失败。检查数据库中的数据是否正确编码。检查客户端编码设置。这应该可以解决您的问题。

您应该用内容类型指示编码,例如

Content-Type: text/html; charset=utf-8

这解决了大多数问题。

我不知道确切的问题是什么,但现在一切似乎都正常。我刚刚下载了新的PHP软件包,并从头开始进行了配置。我没有提到的是,我使用的是ZendServer社区版,它似乎导致了问题(顺便说一下,是同一个PHP5.2.17版本)。当我将虚拟主机配置为使用新安装的PHP时,一切正常,但当我使用内置PHP的ZendServer时,会导致问题。

检查PHP配置,这两种SAPI类型之间可能有所不同。查找
default\u字符集
ini设置,例如。php.ini文件在这两种情况下使用相同,更改default\u字符集也没有效果:(使用命令行工具(如
curl-i)检查服务器响应头http://yoururl/
并比较两者是否相同。否,输出不相同。在CGI模式下,我得到正确的字符,但更改为PHP作为Apache模块时,我得到损坏的输出。例如:¾￳¾¾我要求的是响应头,而不是响应体。配置完全相同,我所做的更改是添加一些行以启用PHP,因为httpd.conf.PHP.ini使用的是相同的CGI,PHP目录也相同。我看不到phpinfo()中的任何差异;除PHP模式外的输出。但PHP中的文本作为模块案例会损坏。似乎存在某种问题,不是Apache或PHP配置中的问题,而是mssql或mbstring扩展中的问题。我放弃了……问题是与mssql数据库访问和/或mssql数据库设置相关的代码/配置以及其中的日期。
Content-Type: text/html; charset=utf-8