浏览模式: 标准 | 列表 全部文章

解决使用cPanel面板出现500 Internal Server Error的...

购买了一个cpanel面板的空间,但是在安装程序的时候遭遇到了500 Internal Server Error的错误: 

  • Internal Server Error
  • The server encountered an internal error or misconfiguration and was unable to complete your request.
  • Please contact the server administrator, webmaster@demo.is36.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
  • More information about this error may be available in the server error log.
  • Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
  • Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_perl/2.0.6 Perl/v5.10.1 Server at demo.is36.com Port 80 

解决方法很简单,打开cPanel面板“错误日志”页,一般会有2种错误:

  1. 第一种即“文件夹”给了太高权限,可被“组写入”:install is writeable by group
  2. 第二种即“文件”给了太高权限,可被“组写入”:index.php is writeable by group

只需要把“文件夹”和“文件”的“组写入”权限取消掉即可: 

  1. 对“文件夹”去掉“组写入”权限,也就是从默认775改成755即可
  2. 对“文件”去掉“组写入”权限,也就是从默认664改成644即可

以install目录和index.php文件为例:

以上2个修改均可以通过ftp修改或者chmod命令完成

  • chmod 755 install
  • chmod 644 index.php

而如果有比较多的文件与文件夹需要更改权限,使用chmod分别设置子目录和文件不同权限: 

先将当前目录中的所有“文件”包括文件夹设置为644:chmod 644 -R * 

再将当前目录中的所有“子目录”的权限设置为755:chmod 755 `find -type d` 

也可以用find命令实现:

  • find ./ -type f -exec chmod 644 {} \;
  • find ./ -type d -exec chmod 755 {} \;

Tags: cpanel, 500, chmod

验证IP是否被加入邮件黑名单

比如IP为111.111.111.111,打开这个网址(替换其中的IP地址):

http://bgp.he.net/ip/111.111.111.111#_rbl

经过几秒钟的检查:Please wait while RBL checks are performed...

然后就会出现如下结果(显示PASS即IP没被列入邮件黑名单):

  • b.barracudacentral.org PASS
  • bl.deadbeef.com PASS
  • bl.emailbasura.org PASS
  • bl.spamcannibal.org PASS
  • bl.spamcop.net PASS
  • blackholes.five-ten-sg.com PASS
  • cbl.abuseat.org PASS
  • cdl.anti-spam.org.cn PASS
  • combined.njabl.org PASS
  • combined.rbl.msrbl.net PASS
  • dnsbl-1.uceprotect.net PASS
  • dnsbl-2.uceprotect.net PASS
  • dnsbl-3.uceprotect.net PASS
  • dnsbl.ahbl.org PASS
  • dnsbl.cyberlogic.net PASS
  • dnsbl.inps.de PASS
  • dnsbl.njabl.org PASS
  • dnsbl.sorbs.net PASS
  • drone.abuse.ch PASS
  • dul.dnsbl.sorbs.net PASS
  • dul.ru PASS
  • dyna.spamrats.com PASS
  • http.dnsbl.sorbs.net PASS
  • images.rbl.msrbl.net PASS
  • korea.services.net PASS
  • misc.dnsbl.sorbs.net PASS
  • noptr.spamrats.com PASS
  • pbl.spamhaus.org PASS
  • phishing.rbl.msrbl.net PASS
  • psbl.surriel.com PASS
  • rbl.spamlab.com PASS
  • rbl.suresupport.com PASS
  • sbl.spamhaus.org PASS
  • short.rbl.jp PASS
  • smtp.dnsbl.sorbs.net PASS
  • socks.dnsbl.sorbs.net PASS
  • spam.abuse.ch PASS
  • spam.dnsbl.sorbs.net PASS
  • spam.rbl.msrbl.net PASS
  • spam.spamrats.com PASS
  • spamrbl.imp.ch PASS
  • tor.ahbl.org PASS
  • ubl.unsubscore.com PASS
  • virbl.bit.nl PASS
  • virus.rbl.jp PASS
  • virus.rbl.msrbl.net PASS
  • web.dnsbl.sorbs.net PASS
  • wormrbl.imp.ch PASS
  • xbl.spamhaus.org PASS
  • zen.spamhaus.org PASS
  • zombie.dnsbl.sorbs.net PASS

解决Zend加密的PHP页面出现Incompatible file format...

手头有一套php程序是zend加密的,将它放到主机空间上运行的时候遭遇如下问题:Fatal error: Incompatible file format: The encoded file has format major ID 3, whereas the Loader expects 4 in

百度总结之后,汇总该问题相关信息如下:

  1. 从PHP5.3开始如果要支持zendguard加密的PHP代码,必须安装zend guard loader,老的zend optimizer将不被支持。
  2. PHP5.2之前的Zend加密程序用Zend Optimizer解析。
  3. PHP5.3开始的Zend加密程序用Zend Guard Loader解析。

综上,造成该问题的原因是Zend Guard 5.1更新了加密PHP文件的算法来迎合PHP5.3新版本支持,用Zend Guard老版本加密过的PHP文件在 PHP5.3 + Zend Guard Loader的环境下都无法正常浏览,会报出文章开头的错误。

解决方法:

  • 可以把PHP程序源文件在Zend Guard 5.1下重新加密,然后才能浏览。本处因为拿到的就是加密商业代码,故放弃这一招。
  • 也可以把程序放到PHP5.2 + Zend Optimizer的环境下运行即可。本处选择它来运行这套加密程序。

我的主机提供商homezz.COM提供空间自动搬家功能,我把空间搬迁到了低版本PHP的环境下,搞定。摘录前后主机PHP环境如下:

  • 搬迁前:PHP5.3.17 + Zend Engine v2.3.0 + Zend Guard Loader v3.3
  • 搬迁后:PHP5.2.17 + Zend Engine v2.2.0 + Zend Optimizer v3.3.9

Tags: zend, php, zendguard, zend guard loader, zend optimizer, homezz

Linux下shell支持中文显示的方法

对当前环境临时生效:export LANG=zh_CN.GB18030

永久写入配置文件:vi /etc/sysconfig/i18n

  • #LANG="en_US.UTF-8"
  • LANG="zh_CN.GB18030"
  • SYSFONT="latarcyrheb-sun16"

Linux下shell取得字符串行数与指定字符串长度

有某个文本文件is36.txt,需要取得字符串行数指定字符串长度

linuxshell取得字符串行数:

  • cat is36.txt | wc -l

Linux下shell取得指定字符串长度(默认第一行):

  • cat is36.txt | wc -L

Linux下shell取得指定字符串长度(2p即第二行):

  • sed -n '2p' is36.txt | wc -L

Tags: linux, shell, 字符串行数, 指定字符串长度

Windows命令行下终止进程的命令taskkill与tskill使用方法

C:\>taskkill /?

TASKKILL [/S system [/U username [/P [password]]]]

         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:

    使用该工具按照进程 ID (PID) 或映像名称终止任务。

参数列表:

    /S    system           指定要连接的远程系统。

    /U    [domain\]user    指定应该在哪个用户上下文执行这个命令。

    /P    [password]       为提供的用户上下文指定密码。如果忽略,提示输入。

    /FI   filter           应用筛选器以选择一组任务。允许使用 "*"。例如,映像名称 eq acme*

    /PID  processid        指定要终止的进程的 PID。使用 TaskList 取得 PID。

    /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来指定所有任务或映像名称。

    /T                     终止指定的进程和由它启用的子进程。

    /F                     指定强制终止进程。

筛选器:

    筛选器名      有效运算符                有效值

    -----------   ---------------           -------------------------

    STATUS        eq, ne                    RUNNING |  NOT RESPONDING | UNKNOWN

    IMAGENAME     eq, ne                    映像名称

    PID           eq, ne, gt, lt, ge, le    PID 值

    SESSION       eq, ne, gt, lt, ge, le    会话编号。

    CPUTIME       eq, ne, gt, lt, ge, le    CPU 时间,格式为

                                            hh:mm:ss。

                                            hh - 时,

                                            mm - 分,ss - 秒

    MEMUSAGE      eq, ne, gt, lt, ge, le    内存使用量,单位为 KB

    USERNAME      eq, ne                    用户名,格式为 [domain\]user

    MODULES       eq, ne                    DLL 名称

    SERVICES      eq, ne                    服务名称

    WINDOWTITLE   eq, ne                    窗口标题

    说明

    ----

    1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。

    2) 远程进程总是要强行 (/F) 终止。

    3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。

例如:

    TASKKILL /IM notepad.exe

    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T

    TASKKILL /F /IM cmd.exe /T

    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"

    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe

    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *

    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"

C:\>tskill /?

结束进程。

TSKILL processid | processname [/SERVER:servername] [/ID:sessionid | /A] [/V]

  processid           要结束的进程的 Process ID。

  processname         要结束的进程名称。

  /SERVER:servername  含有 processID 的服务器(默认值是当前值)。

                         使用进程名和 /SERVER 时,必须指定 /ID

                         或 /A

  /ID:sessionid       结束在指定会话下运行的进程。

  /A                  结束在所有会话下运行的进程。

  /V                  显示正在执行的操作的信息。

Tags: taskkill, tskill

解决cos-html-cache在Godaddy主机下无法生成静态文章页问题

godaddy主机(Linux系统)上部署了wordpress程序,安装了cos-html-cache生成静态首页与静态文章页,然而只有首页可以静态化,文章页无法生成。

造成该问题的原因是Godaddy的主机太安全的缘故,首先来看下如下变量与函数的差别:

  • $_SERVER['DOCUMENT_ROOT']变量:返回服务器中定义的当前脚本所在的文档根目录   
  • dirname(__FILE__) 函数:返回的当前脚本的绝对路径

而cos-html-cache中采用了$_SERVER['DOCUMENT_ROOT']变量来获取网站目录却在Godaddy这类BT主机商遭遇了问题——测试生成首页无法生成静态文章页。

解决方法比较简单,将以下内容保存为get_path.php文件放到网站根目录上: 

  • <?php
  • echo "SeverPath: ".dirname(__FILE__)."/";
  • echo "<br>";
  • $path = $_SERVER['DOCUMENT_ROOT']."/";
  • echo "DOCUMENT_ROOT: ".$path;
  • ?>

访问这个文件获取到的信息如下: 

  • SeverPath: /home/content/is36/html/www.is36.com/
  • DOCUMENT_ROOT: /var/chroot/home/content/is36/html/

是否看到差别了?进入WordPress后台,打开如下链接(自行修改域名):

http://www.is36.com/wp-admin/plugin-editor.php?file=cos-html-cache/cos-html-cache.php

然后把$path = $_SERVER['DOCUMENT_ROOT']."/";修改为$path = "/home/content/is36/html/www.is36.com/";

修改完成后点击更新文件,然后再用另外一个未登陆WordPress的浏览器访问首页跟文章页,你会发现都更新了!(注意:登陆的时候页面不会被缓存,或者退出登陆访问页面。


吐槽:Godaddy主机无法在主机面板里调整默认文档页的先后顺序,经测试发现index.php文件的优先级高于index.html,如果生成的静态页index.html无法被先访问就失去了静态化的意义。那么针对Godaddy主机这个不算问题的问题,解决方案也简单。把以下规则加入到根目录的.htaccess文件里: 

  • <Files ~ "^.(htaccess|htpasswd)$">
  • deny from all
  • </Files>
  • DirectoryIndex index.html index.php      
  • order deny,allow

Tags: cos-html-cache, godaddy, wordpress

记录一下BuyVM2013年搬迁数据中心

buyvm家有5台位于西海岸圣何塞数据中心的VPS,虽然都是基于OpenVZ虚拟化技术,不过线路比较稳定,电信跟联通均走nlayer线路,而其主站www.buyvm.net电信走pccw线路,联通走tinet线路比较奇怪。

这次整个搬迁从圣何塞至拉斯维加斯,整个搬迁时间跨度:北京时间从1月20日13:30至1月21日1:00-2:00。

搬迁之前记录下5台VPS的一些信息:

  • 内存256MB*2,$35/年,母鸡node47,L5520*2,在线26天
  • 内存256MB*2,$35/年,母鸡node29,E5520*2,在线62天
  • 内存128MB*2,$15/年,母鸡node32,L5520*1,在线165天
  • 内存128MB*2,$15/年,母鸡node65,L5520*1,在线220天
  • 内存128MB*2,$15/年,母鸡node48,L5638*1,在线12天

因为BuyVM家的tos(规则)比较严格,连账户的信息修改都要联系客服完成,若信息有虚假或者不太真实均会导致订单被认定为欺诈。也正因为如此,虽然他们家VPS性价比高但是稳定性也还不错。

 

Tags: buyvm, 圣何塞, 拉斯维加斯, nlayer, pccw, tinet