作者归档:zjpro
模板自定义函数导致dede更新出现500错误
奇怪的linux网络不通事件
一个客户Centos Linux系统出现dz通信失败,
ssh登录到服务器后发现,服务器有双ip, 1.1.1.1 和 1.1.1.2
经询问得知原来1.1.1.1 废弃不用,更改为1.1.1.2,但是原来的系统管理员图省事,
只是增加了1.1.1.2的新ip,并未去掉老的ip,导致服务器对外ping和从服务器的主动动作都
被认为是从老的ip发出,估计外围交换机做了限制,导致失败
去掉旧ip,只保留新ip,问题解决
amh的chroot情况下php访问根之外文件的方法
amh 4.2的chroot限制了php访问网站根目录之外文件,用Linux的连接方式失效,
可以采用 mount –bind outdir chroot_inner 的方式来解决!
centos http-ssl.conf 里面的参数配置
SSLCertificateFile “/etc/pki/tls/f028f24f6ee793e6.crt”
SSLCertificateKeyFile “/etc/pki/tls/private/ca.key”
SSLCertificateChainFile “/etc/pki/tls/sf_bundle-g2-g1.crt”
帝国cms的php环境需求short_open_tag 要设置为on
如题
php.ini 里面 short_open_tag = On
这样 <?=$aaa?> 才能用
phpcms的短信通道修改
只允许特定名字php执行的rewrite规则
apache 的这样写
RewriteEngine On
RewriteRule ^(?!index\.php|其他\.php)(.*)\.php$ index.php [L]
nginx的这样写
rewrite ^/(?!index\.php|其他\.php)(.*)\.php$ index.php last;
utf8 with bom 的文件清理掉bom不可见字符
如果你的php文件用notepad++打开后,右下角是这样的,注意 UTF-8-BOM,那么此文件需要修改为 不含BOM头的UTF-8文件,方法是
点击菜单-》格式-》转为UTF-8 无BOM编码格式,保存即可
有关bom https://www.w3.org/International/questions/qa-utf8-bom
科普: BOM is byte-order mark
另:今天一个客户的thinkphp模版调用utf8 bom 的模版时候,模版里面是frameset,结果导致内容不显示,所以还是要好好处理这个隐蔽的问题啊
paypal接入技术资料备忘和演示
win主机因时间差过大导致同步失败解决方案
phpcms伪静态自定义
首先增加内容模块的url定义
然后把要启用此规则的分类设置为此规则
修改代码 phpcms\modules\content\classes\url.class.php 修改如下内容
增加 .htaccess
注意,以上只是例子代码, catid=6是原始phpcms里面国内新闻对应的id,你正式应用
请修改为你自己的,并且每一个 栏目的伪静态都 大概需要增加这样4行伪静态代码,
注意,不建议做多级嵌套的栏目类分类,比如 /guonei/lanmu1/ , /guonei/lanmu2/
最好只做一级目录就好了
一句话tip: 文件的存储格式 win /unix /mac 会导致dede的编译代码莫名奇妙的问题
杰奇jieqi 的opf问题,wap端读取opf数据不是最新的
很奇怪的一个错误, 经过简单的核查, 发现出现这种错误的小说占那么一部分. 大致情况是这样 我的小说站数据pc/wap 是共用一个的, pc端一点问题都没有. 而在wap有的小说是没问题的, 有问题的则是打开目录没有问题, 前一部分章节没有问题, 但是后面的章节内容 点之后出现类似PC端404的意思. 给浏览器的显示页面还是当前小说的目录页(没有调出小说内容页), 但是很多数据已经没了, 比如所属类别, 小说名, 最新章节. 仔细检查发现了下面的问题: 1. 出问题的章节, 应该都是类似PC的404页面, 但是却可以调用出部分数据. 2. A小说共100章, 第51章出了问题, 那么在第50章内容页, 点下一章的时候, !!!发现提交的URL是当前小说的目录页.!!!
根据 modules/article/wapreader.php?aid=57549&cid=9345391
查看到 wapreader.php 里面
if(!$package->showChapter($_REQUEST[‘cid’]))
{
echo __LINE__;die();
$package->showIndex();
}
知道应该是 $package->showChapter函数的问题
进而查找 class/wappackage.php 里面
function showChapter($cid)
{
global $jieqiConfigs;
global $jieqi_file_postfix;
$i=0;
$num=count($this->chapters);
while($i<$num){
$tmpvar=$this->getCid($this->chapters[$i][‘href’]);
if($tmpvar==$cid){
$this->makeHtml($i+1, true, true);
return true;
}
$i++;
}
return false;
}
应该是循环后得到了false值,那么为什么呢,说明 $this->chapters 这个值里面没有$_REQUEST[‘cid’]的参数,那么 $this->chapters 从何而来呢,
发现 loadOPF() 函数读取 index.opf ,得到 chapters的数组,里面包含的章节的标题和地址,那么只需要更新这个 index.opf 就能得到最新的数据,那么
$tmpvar=$this->getCid($this->chapters[$i][‘href’]);
就能得到某个章节的值了.
问题解决
非线程安全版php不支持zend
http://www.4wei.cn/archives/1001397
fastcgi 模式+非线程安全版本的php 不支持 zend 3.3.3
fastcgi 模式+非线程安全版本的php 不支持 zend 3.3.3
fastcgi 模式+非线程安全版本的php 不支持 zend 3.3.3
重要说三遍
phpmail 测试
下载如下 smtp_test
phpmailer下载地址 https://github.com/PHPMailer/PHPMailer
微信支付的调试方法
uuid mount 硬盘
nginx 的php配置支持php-fpm和Apache,失败后自动切换
其中 error_page 502 = @apache; 是关键!!!
location ~ .*\.php$ { error_page 502 = @apache; fastcgi_pass 127.0.0.1:9002; fastcgi_index index.php; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; } location @apache { proxy_pass http://127.0.0.1:88; proxy_connect_timeout 30s; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 32k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_redirect off; proxy_hide_header Vary; proxy_set_header Accept-Encoding ''; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
某些php视频网站程序无法截图和转换视频的问题
类似 clip-share ,AVS 一类的php程序,这linux安装环境,也配置好了诸如ffmpeg , 等等工具,可仍然无法转换视频,查看此类问题的方法是这这类php程序的log里找,比如 tmp/logs/XXX.log 等文件,里面的前面几行一般是运行的命令行,当你手动去运行那个命令行语句的时候,就会调试出问题,有时候碰到的情况是,cli 模式的php使用的php.ini 居然和 web 服务器用的并非一个php.ini ,这时候就需要统一双方的差异了。
discuz使用163邮件smtp错误的说明
http://bbs.zb7.com/thread-3007-1-1.html
发送邮件不成功的话,去检查data/log 下的 xxx__SMTP.php文件内容XXX是本月的日期
163网易邮件系统有个客户端授权码,那个才是smtp的登录密码!!!!
ecshop mobile 微信支付后定单状态不改变
discuz的QQ登录 21006
discuz QQ登录 20003问题
此问题主要是因为 在获取token时候
http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token
造成失败导致。
在 source/plugin/manyou/Service/Client/ConnectOAuth.php的connectGetRequestToken 里面没有正常获取,如图
public function connectGetRequestToken($callback, $clientIp = '') { $extra = array(); $extra['oauth_callback'] = rawurlencode($callback); if ($clientIp) { $extra['oauth_client_ip'] = $clientIp; } $this->setTokenSecret(''); $response = $this->_request($this->_requestTokenURL, $extra); while( trim($response) == 'error_code=20003' ) { $response = $this->_request($this->_requestTokenURL, $extra); } parse_str($response, $params); //var_dump($params);die(); if($params['oauth_token'] && $params['oauth_token_secret']) { return $params; } else { $params['error_code'] = $params['error_code'] ? $params['error_code'] : self::RESPONSE_ERROR; throw new Exception($params['error_code'], __LINE__); } }
qq互联的失败可能是php curl ssl 出错
最近碰到一些QQ互联登录的问题,可能是php的curl在https 情况下出现 segment falt 造成,终极原因需要修复php curl ssl,
造成的原因可能是libsqlite
nginx的godaddy ssl 证书配置
openssl genrsa -des3 -out server.key 2048
生成server.key
openssl rsa -in server.key -out server.key
去除server.key 里面密码
openssl req -new -key server.key -out server.csr
生成server.csr
提交server.csr 内容到godaddy,审核后下载zip文件
把里面的非gd_bundled的文件和server.key 合并为pem
cat bf5d584ffa226fa6.crt server.key > /etc/nginx/server.pem
cp server.key /etc/nginx/server.key
nginx的配置里面这样写
ssl on;
ssl_certificate /etc/nginx/server.pem;
ssl_certificate_key /etc/nginx/server.key;
mysql4.0 突破单表4G文件系统限制
参考此文
http://database.51cto.com/art/201104/254125_1.htm
具体操作
ALTER TABLE cdb_posts MAX_ROWS=1000000000 AVG_ROW_LENGTH=15000;
在高版本的Linux,高版本的gcc 里面编译mysql4.0
# yum install compat-*
# cd /usr/bin
# mv gcc gcc-backup
# mv g++ g++-backup
# ln -s gcc34 gcc
# ln -s g++34 g++
微软msvc X 的运行库下载
MS VC 6
Microsoft Visual C++ 2005 Redistributable Package
32位(x86): http://www.microsoft.com/zh-cn/download/details.aspx?id=3387
64位(x64): http://www.microsoft.com/zh-cn/download/details.aspx?id=21254
MS VC 9
Microsoft Visual C++ 2008 Redistributable Package
32位(x86):http://www.microsoft.com/zh-CN/download/details.aspx?id=5582
64位(x64):http://www.microsoft.com/zh-CN/download/details.aspx?id=15336
MS VC 10
Microsoft Visual C++ 2010 Redistributable Package
32位(x86): http://www.microsoft.com/zh-cn/download/details.aspx?id=5555
64位(x64):http://www.microsoft.com/zh-cn/download/details.aspx?id=14632
MS VC 11
Microsoft Visual C++ 2012 Redistributable Package
https://www.microsoft.com/zh-CN/download/details.aspx?id=30679
MS VC 12
Microsoft Visual C++ 2013 Redistributable Package
https://www.microsoft.com/zh-CN/download/details.aspx?id=40784
MS VC 14
Microsoft Visual C++ 2015 Redistributable Package
https://www.microsoft.com/zh-cn/download/details.aspx?id=53587
suphp 方式下 多版本php共存的配置
参考部分文档地址
http://www.kvm.la/apache-php52-with-php53.html
经检验发现 此文中基本正确除了 .htaccess 需要这样写
<FilesMatch “\.(inc|php|php3|php4|php5|php6|phtml|phps)$”>
AddHandler x-httpd-php52 .inc .php .php3 .php4 .php5 .php6 .phtml
</FilesMatch>
!!!首先你得会编译一份fastcgi模式的php哦!!!
其余需要配置的文件和参考地址相同,现在列出如下
/usr/local/suphp/etc/suphp.conf
[handlers]
;Handler for php-scripts
x-httpd-php5=”php:/usr/local/php5/bin/php-cgi”
x-httpd-php52=”php:/usr/local/webserver/php/bin/php-cgi”
/etc/httpd/conf/extra/httpd-suphp.conf
<IfModule mod_suphp.c>
<FilesMatch “\.(inc|php|php3|php4|php5|php6|phtml|phps)$”>
AddHandler x-httpd-php5 .inc .php .php3 .php4 .php5 .php6 .phtml
</FilesMatch>
<Location />
suPHP_Engine on
suPHP_ConfigPath /usr/local/etc/php5/cgi/
suPHP_AddHandler x-httpd-php5
suPHP_AddHandler x-httpd-php52
</Location>
</IfModule>