按月存档: 2015/07

默认编码导致的DEDECMS乱码

分类:网站技术日期:2015-07-31 - 9:17:10评论:7条作者:老谢

  一个客户的dedecms乱码,各种检查无果,诡异的是文件的编码以及head里面的meta的编码都是正确的,把生成的HTML下载到本地打开,也都是正常的,一放到服务器就乱码。

  经过更为细致的检查,发现客户在根目录下的.htaccess里面配置了AddDefaultCharset UTF-8,这样就会导致apache默认使用utf-8编码向浏览器发送数据,客户的dedecms是GBK编码,所以自然就乱码了,另外表示真是第一次在有客户在.htaccess里面配置这个。。。下面放一段google到的文字:

  首先,可以使用AddDefaultCharset off来关闭默认文件编码,这样apache服务器就不会在http应答消息头部设置charset,只是设置Content-type: text/html. 而浏览器就会依靠html文件中设置的harset来决定编码。

  其次,脚本php.ini文件中的default_charset = “UTF-8″作用同httpd.conf文件,把该行注释掉,使php自动识别文件的编码方式。

  这样不论你用什么编码方式,只要test.php中的meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 与你test.php文件编码方式相同,就不会产生乱码问题。用户提交数据的编码浏览器提交的字符编码由客户端的characher encoding决定。

  例如,当前浏览器的编码是Gb2312,用户提交数据后,无论apache设置的编码方式是GB2312还是UTF-8,这时在服务器端接收到的仍是以Gb2312编码的数据。

  如果要在返回页面上显示用户刚才提交的数据,而该页面是用UTF-8编码的或者要在数据库中存储的用户提交的数据,而数据库是UTF-8编码的,那就要做字符转换了。

mail()函数发信报错

分类:linux日期:2015-07-01 - 22:10:23评论:11条作者:老谢

  mail()函数发信报错:Could not instantiate mail function.,原因是服务器没有安装sendmail组件,使用yum进行安装:

yum install sendmail
/etc/init.d/sendmail start

注意:如果sendmail启动缓慢,请将hostname加入到/etc/hosts里面

   配置/usr/local/php/etc/php.ini,填写sendmail绝对路径:

vim /usr/local/php/etc/php.ini
sendmail_path = /usr/sbin/sendmail -t -i
:wq!
/etc/init.d/php-fpm restart

注意:如果邮件显示为xxx代发,请将你的域名加入到/etc/hosts即可

Tags: ,