alamise

Website URL:

安装rpmforge yum源

  • July 21, 2010
  • Published in 主机

CentOS 5 - install rpmforge yum repo


Install DAG GPG key

wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt     # download DAG GPG key
rpm --import RPM-GPG-KEY.dag.txt # import the key
rm RPM-GPG-KEY.dag.txt # clean up after ourselves


Install yum-priorities

yum install yum-priorities


Download and install package (i386 - 32bit)

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm # install the rpmforge yum repo
rm rpmforge-release-0.3.6-1.el5.rf.i386.rpm # clean up after ourselves


Download and install package (x86_64
- 64bit)

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm # install the rpmforge yum repo
rm rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm # clean up after ourselves


Set priorities

vim /etc/yum.repos.d/CentOS-Base.repo
[base] or [updates] or [addons] or [extras]
priority=1
[centosplus]
priority=2
vim /etc/yum.repos.d/rpmforge.repo
[rpmforge]
priority=10

 

    wput

    • July 21, 2010
    • Published in 主机

    yum install gnults

    rpm -ivh  wput-0.6.1-6.el5.i386.rpm



    wput可以put目录,使用也简单。

    wput /home/test ftp://ftpusername:password@ip/test
    文件名、目录名中包含的空格和汉字,可能报错。

      unzip

      • July 21, 2010
      • Published in 主机

      winscp 添加

      unzip -d "!" "!"

      linux unzip功 能说明:unzip为.zip 压缩文件的解压缩程序。
      unzip [-Z]  [-cflptTuvz[abjnoqsCKLMVWX$/:]]  file[.zip]  [file(s) ...]
      [-x xfile(s) ...] [-d exdir]
      语  法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
      参  数:
      -z   仅显示压缩文件的备注文字。
      -a   对文本文件进行必要的字符转换。
      -b   不要对文本文件进行字符转换。
      -C   压缩文件中的文件名称区分大小写。
      -j   不处理压缩文件中原有的目录路径。
      -L   将压缩文件中的全部文件名改为小写。
      -M   将输出结果送到more程序处理。
      -n   解压缩时不要覆盖原有的文件。
      -o   不必先询问用户,unzip执行后覆盖原有文件。
      -P<密码>   使用zip的密码选项。
      -q   执行时不显示任何信息。
      -s   将文件名中的空白字符转换为底线字符。
      -V   保留VMS的文件版本信息。
      -X   解压缩时同时回存文件原来的UID/GID。
      [.zip文件]   指定.zip压缩文件。
      [文件]   指定要处理.zip压缩文件中的哪些文件。
      -d<目录>   指定文件解压缩后所要存储的目录。
      -x<文件>   指定不要处理.zip压缩文件中的哪些文件。
      -Z   unzip -Z等于执行zipinfo指令。
      -c   将解压缩的结果显示到屏幕上,并对字符做适当的转换。
      -f   更新现有的文件。
      -l   显示压缩文件内所包含的文件。
      -p   与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
      -t   检查压缩文件是否正确。
      -u   与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
      -v   执行是时显示详细的信息。

       

       

      例如: 列出当前目录下的test.zip文件中的文件

      $unzip -l test

      解压test.zip文件到test_extract目录

      $unzip test.zip -d test_extract




      后台解压 nohup ..... &

      后台解压test.zip文件到test_extract目录

      $nohup unzip test.zip -d test_extract &

       

        proftpd

        • July 21, 2010
        • Published in 主机

        1.解决连接慢
        客户端连ftp都非常慢
        connected之后要好一会儿才有反应
        后来发现是开了反向dns的缘故
        通过以下配置将其关闭就好了


        网络选项-->DNS逆向查找客户端的地址吗?-->否

        UseReverseDNS off DNS逆向查找客户端的地址吗?

         

        网络选项-->查找远端Ident用户名? 否

        IdentLookups off 查找远端Ident用户名?

        2.设定不可以访问上层目录
        文件和目录-->Chroot目录-->Home directory

        3.显示 .htaccess 文件
        文件和目录-->Directory list options-->添加 -a

        4.允许 重写 overwrite
        访问 控制-->允许重写文件吗?-->

          wget

          • July 21, 2010
          • Published in 主机

          Wget

          Wget是一个十分常用命令行下载工具,Wget使用格式如下:

          #wget [选项] [下载地址]

          Wget常用参数

          -b:后台下载,Wget默认的是把文件下载到当前目录。

          -O:将文件下载到指定的目录中。

          -P:指定保存文件的目录。

          -N:don't re-retrieve files unless newer than

          -t:尝试连接次数,当Wget无法与服务器建立连接时,尝试连接多少次。

          -c:断点续传,如果下载中断,那么连接恢复时会从上次断点开始下载。

          此外,Wget还可下载整个 网站,如下载http://man.chinaunix.net整个Man手册中心。

          只需输入如下命令即可: #wget -r -p -np -k http://man.chinaunix.net 其中-r参数是指使用递归下载,

          -p是指下载所有显示完整网页所以需要的文件,如图片等,-np是指不搜索上层目录,-k则 是指将绝对链接转换为相对链接。

           

          AXEL

          axel的全局配置文件是/etc/axel/axelrc,你可以根据需要对axel进行 定制,比如我取消了对alternate_output = 1一行的注释,以便让axel的输出比较简洁一些,你也可以在这个文件中设置axel使用的线程数,默认是4个线程。

           

          使用很简单 axel url即可

           

          限速使用:加上 -s 参数,如 -s 10240,即每秒下载的字节数,这里是 10 Kb

           

          限制连接数:加上 -n 参数,如 -n 5,即打开 5 个连接。

            pptpd PPP VPN LOG

            • July 21, 2010
            • Published in VPN

            vpn 服务,但通过last查看的时候,只有登录的IP信息,

             
            无法查看VPN客户端登录的用户名,登录地址,断开时间等信息。
             
            请同事写了两个脚本。用于记录登录信息及登出信息。记一下,以备后用
             
            修改ip-up ,ip-down文件,增加以下内容(export PATH 行后面),将日志信息记录到
            /var/log/pptpd.log文件 中
             
            vim /etc/ppp/ip-up 

            echo "" >> /var/log/pptpd.log 
            echo "IP UP        \ 
                `date -d today +%F_%T`        \ 
            $6        \ 
            $PEERNAME        \ 
            $1        \ 
            $5" >> /var/log/pptpd.log
             
            vim /etc/ppp/ip-down文件。ip-down写入pptpd.log与最后一个 ip-up进行配对,以方便查看
             
             

             

            tac /var/log/pptpd.log | while read line 
            do 
                    _tmphead=$(echo $line | cut -d" " -f1,2) 
                    _tmptime=$(echo $line | cut -d" " -f3) 
                    _tmpuser=$(echo $line | cut -d" " -f5) 
                    if [ "IP UP" = "$_tmphead" -a "$PEERNAME" = "$_tmpuser" ] 
                    then 
                            _rep_line="$line" 
                            sed -i "s/$line/$_rep_line\nIP DOWN        \ 
            `date -d today +%F_%T`        \ 
            $6        \ 
            $PEERNAME        \ 
            $1        \ 
            $5/" /var/log/pptpd.log 
                            break 
                    fi 
            done

              Notice: Undefined variable 的解决方法

              • July 21, 2010
              • Published in 主机

              这是PHP警告信息,是由于未定义变量引起的。

              比如:你未设置变量,却在php中用echo $varstr 了,就会出显这种情况,

              解决方法:

              修改php.ini

              将: error_reporting = E_ALL


              修改为:error_reporting = E_ALL & ~E_NOTICE


              如果什么错误都不想让显示,直接修改:




              display_errors = Off


              如果你没有php.ini的修改权限,可在php头部加入


              ini_set("error_reporting","E_ALL & ~E_NOTICE");

              即可

                virtualmin

                My hoster (ovh.com) use his own mirrors for debian.
                so here is my sources.list :

                -----------------------------
                deb ftp://mir1.ovh.net/debian/ lenny main contrib non-free
                deb-src ftp://mir1.ovh.net/debian/ lenny main contrib non-free

                deb http://security.debian.org/ lenny/updates main contrib non-free
                deb-src http://security.debian.org/ lenny/updates main contrib non-free

                -----------------------------
                In this configuration, install.sh don't want to work. It ends with "Package webmin is not available".

                So I change my sources.list in order to include official debian mirror :

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

                #deb ftp://mir1.ovh.net/debian/ lenny main contrib non-free
                #deb-src ftp://mir1.ovh.net/debian/ lenny main contrib non-free

                deb http://ftp.fr.debian.org/debian/ lenny main
                deb-src http://ftp.fr.debian.org/debian lenny main

                deb http://security.debian.org/ lenny/updates main contrib non-free
                deb-src http://security.debian.org/ lenny/updates main contrib non-free

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

                right, the install.sh works now...

                Whats wrong ? OVH's mirror seems to be 100% synchro with the Debian's one. I don't understand.
                In addition, OVH customize Debian 32bit sources.list too. But there is no problem at install !!

                Problem only in 64b... :-(

                  MYSQL5忘记密码后重置root密码

                  • July 21, 2010
                  • Published in 主机

                  系统:DEBIAN etch 4.0

                  MYSQL数 据库版本:5.0.27

                  (1)以 系统root权限登陆

                  (2)停止MYSQL服务器:
                  /etc/init.d/mysql stop

                  (3)跳过授权表执行MYSQL服务器:
                  mysqld_safe --skip-grant-tables --skip-networking &
                  (注:参数--skip-grant-tables为跳过授权表;--skip-networking为不监听TCP/IP连接)

                  (4)执行MYSQL客户端:
                  mysql

                  (5)使用mysql数据库
                  use mysql;

                  (6)更新root密码
                  update user set password=password('新密码') where user='root';

                  (7)关闭mysql服务器,用正常方试起动
                  /etc/init.d/mysql restart

                    putty

                    • July 21, 2010
                    • Published in 主机

                    大致内容罗列如下:

                    • 最 简单的使用,登录 SSH 主机
                    • 中文乱码的处理
                    • PuTTY 常用配置的说明
                      • 复制、粘贴
                      • 保 存会话
                      • 注销
                      • 自动登录用户名
                      • 自动设置环境变量
                      • 设置代理服务器
                      • 自 动执行命令
                      • 备份、删除 PuTTY 的设置
                    • PuTTY 的 X11 转发
                    • 如 何用 PuTTY 建立 SSH 隧道
                    • 如何用 PuTTY 建立反向的 SSH 隧道,像个特洛伊木马一样突破防火墙
                    • 把 PuTTY 作为一个安全的代理服务器
                      • 安全的上网不被嗅探
                      • 避免 MSN 等聊天工具被监听
                    • 怎 样用 PSCP、PSFTP 安全的传输文件
                      • 功能强大的 SFTP 客户端 WinSCP
                    • 用 PuTTYgen 生成密钥,登录 SSH 主机不再需要口令
                    • Pagent 代理密钥,每次开机只需要输入一次密钥口令
                    • Plink 简单而又迅速的执行 SSH 主机上的程序
                    • 常见问题

                    除了上面的这些,还夹杂了一些 PuTTY 使用上的技巧、服务器配置的一些安全建议。说起来这是一些有关 PuTTY 的使用教程,其实也就是 SSH 的参考教程,绝大多数的内容在其他系统或软件上也都是一样的。不同的是参数、配置、命令行之类的,只要会了一个,其他也就触类旁通了。

                    如果 你已经知道 SSH、Telnet、Rlogin 这是什么,就跳过这一部分,看下面的吧。

                    (以后补充,暂时空下)

                    PuTTY 的官方网站:http://www.chiark.greenend.org.uk /~sgtatham/putty/,截止到 2007年6月,发布的最高稳定版本是 0.6。

                    PuTTY 是一个跨平台的远程登录工具,包含了一组程序,包括:

                    • PuTTY (Telnet 和 SSH 客户端)
                    • PSCP (SCP 客户端, 命令行下通过 SSH 拷贝文件,类似于 Unix/Linux 下的 scp 命令)
                    • PSFTP (SFTP 的命令行客户端,类似于 FTP 的文件传输,只不过使用的是 SSH 的 22 端口,而非 FTP 的 21 端口,类似于 Unix/Linux 下的 sftp 命令)
                    • PuTTYtel (仅仅是一个 Telnet 客户端)
                    • Plink (命令行工具,执行远程服务器上的命令)
                    • Pageant (PuTTY、PSCP、Plink 的 SSH 认证代理,用这个可以不用每次都输入口令了)
                    • PuTTYgen (用来生成 RSA 和 DSA 密钥的工具).

                    虽 然包含了这么多,但平时经常见到只是用 PuTTY 登录服务器,完全没有发挥出 PuTTY 的强大功能。
                    PuTTY 作为一个组件也存在于很多的软件中,比如 FileZilla、WinSCP
                    在后面的文字中,如非特别说明,默认的登录的协议是 SSH。毕竟用 PuTTY 主要就是登录 SSH 主机,用 Telnet、RLogin 没法体现出 PuTTY 的强大功能。

                    下载页面在这里:http://www.chiark.greenend.org.uk/~sgtatham /putty/download.html
                    PuTTY 需要安装么?需要么?需要么?真的需要么?不需要。PuTTY 是一个准绿色软件,说它绿色是因为直接就能使用,完全没有任何的安装程序。准绿色是指 PuTTY 的所有配置都保存到了注册表,如果不记得备份注册表中的相关内容,下次重装机器所有配置就没了,而且配置也不方便用闪存盘随身携带。但是 PuTTY 的配置删除还是蛮方便的,运行时指定个参数 -cleanup 就可以清除 PuTTY 的所有配置信息。

                    运行 PuTTY 就可以看到下面这个界面

                    在这里输入服务器的 IP 或主机名,选择好登录协议,还有协议的端口,如果希望把这次的输入保存起来,以后就不需要再重新输入了,就在第4步输入好会话保存的名称,比 如:mail-server,或者干脆就是主机的地址,点击保存就可以了。

                    最后点下面的 Open 按钮,输入正确的用户名和口令,就可以登录服务器了。

                    第 一次登录时,会看到这个对话框

                    这是要告诉你登录的主机密钥指纹,点 Yes 就保存起来,以后就不会再弹出这个窗口,然后就正常登录。点 No 不保存,下次还是要提示你,然后也可以正常登录。如果一台主机我们只是临时登录一下,当然就是点 No 了。Cancel 就是取消,也就是取消了这次登录。
                    如果你曾经登录过这台主机,但是又弹出来这个对话框,可能有以下几种情形:

                    • 主机重新安 装了操作系统
                    • 这台主机可能有多个IP,这次用的是另外一个 IP
                    • 有其他不怀好意的主机来冒充,诱骗我们登录,窃取隐 秘信息

                    前两个情形很常见,一般点 Yes 就行了。后面这个嘛……唔……唔……,点 No/Cancel,再去询问相关的主机管理人员。

                    成功登录主机后,输入命令,这……这……显示,又是乱码。唉,中文乱码是一个老生常谈的 问题,提起来就头大。原因嘛,不外乎字符集、终端编码之类的,还是可以解决的。

                    PuTTY 的默认字体和字符集并不适合中文显示, 在窗口标题上点击右键,选择 Change Settings...

                    在打开的配置窗口左边选择 Appearance,在右边点 Font settings 里面的 Change 按钮,选择好中文字体,比如:宋体、新宋体之类的

                    字体选择好了,还要确定字符集。
                    选择配置窗口左边的 Translation,在右边的 Received data assumed to be in which character set 下拉列表中选择最后一个“Use font encoding”,最后点下面的 Apply 按钮就生效了。

                    重新执行命令 ls -l,就可以正常看到中文了

                    如果还是乱码的话,就执行以下命令,看看系统的字符集
                    echo $LANG $LANGUAGE

                    哦,原来系统的字符集是 UTF-8 呀。重新返回上面选择字符集的那一步, 选择配置窗口左边的 Translation,在右边的 Received data assumed to be in which character set 下拉列表中选择“UTF-8”

                    这下99%的情形下,汉字是不会有乱码了。最后,总之一下 PuTTY 中乱码的解决办法:
                    先 看看系统的字符集,如果是 UTF-8 的,那就简单了,选择好中文字体,然后编码选择 UTF-8 就行了。
                    如果编码是 GB2312、GBK、GB18030,当然也包括 BIG5这些,在 PuTTY 的编码选择中看不到这些编码,那就选择最后一个“Use font encoding”,绝大部分情况下这样就没啥问题了,反正我是没碰到有什么例外的情况。
                    现在的 Linux 如果默认语言选择为中文,默认的编码就是 UTF-8 了。以前安装 Redhat AS 3 时,语言选择为中文,默认的编码是 zh_CN.gb2312, zh_CN.gb18030,好像从 AS 3 update 6 开始,包括现在的 AS4、AS5,中文的默认编码都成了 zh_CN.utf8。至于 Debian、Ubuntu 等等这些上面,好像一直都是 UTF-8。
                    至 于是使用 UTF-8呢,还是用 GB2312、GBK 或者 GB18030呢?我个人还是倾向于 UTF-8。毕竟我们使用的大多数软件都是国外的,处理中文编码多多少少有些问题,PuTTY 自然也不例外。
                    下面的这个图上,我把终端编码修改 为 zh_CN.utf8,然后也按照前面的所说的方法把 PuTTY 的字符集修改为 UTF-8。然后在终端中输入汉字“柴锋”,按左方向键,可以看到汉字显示很正常。

                    我重 新把终端的编码修改为 zh_CN.gb2312,同样的,把 PuTTY 的字符集修改为最后一个“Use font encoding”。还是在终端上输入汉字“柴锋”,按下左方向键以后,会看到汉字乱码了。

                    至于 用哪个编码,主要还是看领导的决定了,我们的领导就喜欢 GBK,连 GB18030 都不行。以前在用 Debian 的时候,好像默认都不支持 GBK 编码。这几年公司的开发在汉字编码问题上出过几次麻烦,还不就是在 ISO8859-1, GB2312/GBK/GB18030和UTF-8上折腾来折腾去。
                    给大家看一张 emacs 的截图,看看上面的这么多语言的文字共同显示,这个会是用 GB2312/GBK/GB18030 的编码么?

                    用 UTF-8 也不是为了要在一个屏幕上显示好几种不认识的文字,也不一定非要是跟国际接轨弄个外包给老外开发程序做个其他语言的界面让老外用,起码不要在那么多编码里 折腾了,顶多两个 ISO8859-1 和 UTF-8。发发牢骚,下面继续……

                    在 PuTTY 的窗口里面复制、粘贴可不能用 Windows 里的这些 Ctrl C, Ctrl Ins, Ctrl V 这些快捷键,Ctrl C 在控制台上可是终止当前的命令执行。
                    PuTTY 的选择、复制、粘贴这些操作都是通过鼠标来完成的。
                    在 Window-〉Selection 这里可以设置复制和粘贴的方式。

                    默认 的 Action of mouse buttons (鼠标按键的功能)的选项是 Compromise,这种方式下选中有两种方式,一是直接用鼠标左键拖拉选中就可以了,二是用鼠标中键单击选中区域的开头,用滚动条拖拉到期望选中区域 的末尾,再用鼠标中键单击,就可以选中了。
                    选中以后,单击鼠标左键就把选中部分复制到剪贴板了。粘贴也很简单,单击鼠标右键。
                    Action of mouse buttons 的第一个选项是 Windows (Windows 方式的),鼠标中键的操作跟前面提到的一样。右键不是粘贴了,而是打开了右键菜单。

                    其实 这个右键菜单在标题栏上点击,也都可以看得到。

                    第三 个选项是 xterm (xterm 方式),这个跟默认的 Compromise 方式相反的,中键和右键的操作调换了一下,就不多说了。
                    下面 那个 Shift overrides application's use of mouse 是和 Shift 键有关的。有些 Rogue Like 的程序,比如 mc、links、Lynx、VIM 等等,都支持鼠标操作,想在用鼠标在上面选择或粘贴就不行了。这个选项默认是选中的,在支持鼠标操作的 Rogue Like 界面下,按住 Shift 键,就可以像前面的那样用鼠标来选择、复制、粘贴了。
                    看下面的这个图片,用 Links 打开了 Google 的首页,用鼠标去选中 顶部中间的 Google,我们会发现,弹出了保存的对话框。

                    按住 Shift 键重新操作一次,哈哈,这次选中了。

                    在 Control use of mouse 里面还有个 Default selection mode (默认的选择模式),默认是 Normal,就像文字处理工具里这样的选择

                    另外 一个是 Rectangular block(块选择方式),至于用哪种方式就看自己的选择了。

                    这 次更改配置参数了,关闭窗口后,下次使用还是要重新选择的,麻烦。
                    还是回到上面修改配置的哪个地方,选择左边的 Session,在右边选择要覆盖的会话名称,或者重新输入一个新的名称,点击 Save 按钮保存。

                    成功登录主机后,也能正常看到中文了。这样,我们就可以完成大部分的工作。最后要关闭 窗口了,该怎么办呢?我见过很多人,包括我们公司负责专职维护的同事,都是直接点击窗口上的关闭按钮,完全没有理会弹出警告窗口,直接点击了 Yes。

                    这样做是不对的,首先这 不是正确的注销方式,应该输入命令 exit 来正常注销; 其次直接关闭窗口后,你的登录其实还在服务器上,如果一连多次的这样强制关闭窗口,用命令 w 或者 who 命令查看时,可以看到很多的用户还在系统上登录,占用了系统的资源。最重要的是,你的这次登录可能只是为了启动一下 WebLogic 或者其他什么应用服务器,直接关闭窗口后,可能会导致你的业务在随后的几分钟内也被终止,这应该不是你所希望看到的吧。
                    如果上述的理由是每次要输 入 exit 然后回车,比较麻烦。你可以用快捷键 Ctrl d 来注销登录,一般情况下,快捷键一按窗口都直接关闭了,还省了两次鼠标点击。
                    在 前面说道保存会话时,大家或许也注意到,下面有个 Close window on exit 有三个选项:

                    • Always (不管怎样,窗口总是要关闭的)
                    • Never (无论是否有程序还在运行,都不要关闭窗口)
                    • Only on clear exit (这个是默认选中的,只有在本次登录中运行的程序都正常终止或者在后台运行,窗口才关闭)

                    有的程序在执 行时,虽然在命令最后面加上 “&”就能放到后台运行。但是正常注销登录后,窗口没有被自动关闭,还能看到程序的输出,这时强制关闭窗口还是可以的。为了避免这种情形,可以使 用 nohup 命令。
                    用法嘛就是: nohup 命令 命令参数,这样就可以了。

                    执行了一个命令,输出了好多东西,但是默认的配 置下,PuTTY只保存了最后200行的内容,满足不了我们的需求

                      Subscribe to this RSS feed
                      Notice: Undefined offset: 1 in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/pagination.php on line 18

                      Notice: Undefined offset: 1 in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/pagination.php on line 34

                      Notice: Undefined offset: 2 in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/pagination.php on line 34

                      Notice: Undefined offset: 3 in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/pagination.php on line 34

                      Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/user.php on line 145

                      Notice: Undefined offset: 1 in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/pagination.php on line 18

                      Notice: Undefined offset: 1 in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/pagination.php on line 34

                      Notice: Undefined offset: 2 in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/pagination.php on line 34

                      Notice: Undefined offset: 3 in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/pagination.php on line 34