WordPress网站中出现Warning: fsockopen() has been disabled for security reasons问题的解决方法

今天上网站发布文章的时候,无意中发现网站出现如下错误提示:Warning: fsockopen() has been disabled for security reasons in /home/***/www.iweer.com/public_html/wp-includes/class-snoopy.php on line 1148。出现fsockopen()函数被禁用这一错误提示的原因是,Wordpress主机linux服务器考虑到服务器的安全性而禁用了fsockopen()函数。该问题解决方法如下:

1、如果你的主机服务商没有禁用pfsockopen()函数的话,那么你只需要打开错误提示文件wp-includes/class-snoopy.php或其它报错文件,将fsockopen()函数替换成pfsockopen()函数即可。

2、如果你的主机服务商同时禁用了fsockopen()和pfsockopen(),那么用@stream_socket_client()等其它函数代替。打开错误提示文件wp-includes/class-snoopy.php或其它报错文件,用stream_socket_client()函数代替fsockopen()函数。

本文来源:http://iweer.com/appear-in-the-wordpress-site-warningfsockopen-has-been-disabled-for-security-reasons-question-solution.html

原文方法2函数写少了@

fedora 安装 flash 插件

rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux

yum update

yum install flash-plugin nspluginwrapper alsa-plugins-pulseaudio libcurl

报错

yum install flash-plugin nspluginwrapper alsa-plugins-pulseaudio libcurl --nogkg

Warning: Missing argument 2 for wpdb::prepare()

如果你将自己的博客更新为Wordpress-3.5,你会发现在你的页面中会出现一个警告信息,如:

Warning: Missing argument 2 for wpdb::prepare()这样的报错信息,在看到这个信息的时候,你一定会以为是在更新的过程中哪里出了错,但请注意的是:这与你的更新及与你当前使用的主题完全没有关系!这是3.5版本中为了安全而做的一个改动,是为了避免SQL注入所引起的安全问题!

在你的主题footer.php文件中会有类似如下的代码:

$post_datetimes = $wpdb->get_row($wpdb->prepare(“SELECT YEAR(min(post_date_gmt)) AS firstyear, YEAR(max(post_date_gmt)) AS lastyear FROM $wpdb->posts WHERE post_date_gmt > 1970"));

在3.5版本之前,这样的写法是没有任何问题的,如:

prepare("SELECT YEAR(min(post_date_gmt)) AS firstyear, YEAR(max(post_date_gmt)) AS lastyear FROM $wpdb->posts WHERE post_date_gmt > 1970"));

但是在3.5,上面的写法就是错的,正确的写法应当是:

prepare("SELECT YEAR(min(post_date_gmt)) AS firstyear, YEAR(max(post_date_gmt)) AS lastyear FROM $wpdb->posts WHERE post_date_gmt > %d",'1970'));

看到上面的区别了吗?在SQL语句中,where条件变为了动态参数绑定形式:

post_date_gmt > "%d",'1970'

这种写法在系统的安全性方面要更好!

再给个普遍点的例子,这样写法是正确的:

$wpdb->prepare( "SELECT * FROM table WHERE id = %d", $id );

传自:

http://www.zihou.me/html/2012/12/12/8079.html

centos错误缩减逻辑分区无法开机的解决办法

centos启动时提示

/dev/mapper/vg_web-lv_home: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
         (i.e., without -a or -p options)         [FAILED]
*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance
(or type Control-D to continue):

以上提示大概意思是读取分区,出错无法挂载分区。输入root密码或按下Control + D继续(英语不好不能一句一句翻译。。。。)

解决方法:
首先输入root的密码,后输入

# mount-o remount,rw /

获取修改磁盘权限

修改挂载文件

# vi /etc/fstab 

注释掉这行

/dev/mapper/vg_web-lv_home /home     ext4    defaults    1 2

保存,重启

# reboot

已经可以进入系统了
重新扩容下分区

#lvm lvextend -L +100G /dev/mapper/vg_web-lv_home

修改挂载文件

# vi /etc/fstab 

将刚才这行注释去掉

/dev/mapper/vg_web-lv_home /home     ext4    defaults    1 2

重启即可正常启动

#reboot

以上为出错当时的操作方法后来发现有因该不需要修改挂载文件,直接将出错分区重新扩容重启应该就可以了。(待验证)

oracle 监听多ip

方法有两个

通过修改/oracle/product/11.1.0/db_1/network/admin/listener.ora这个文件

1.直接在原来的监听里面加入新的ip,

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = db))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.253)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.254)(PORT = 1522))
)
)

2.新建一个监听

LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = db))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.253)(PORT = 1521))
)
)

LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = db))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.254)(PORT = 1522))
)
)

修改完当然是重启监听

$lsnrctl stop 停止监听
$lsnrctl start 打开监听
$lsnrctl status 查看监听状态

注意每个ip分批一个端口。

centos 6.3 远程重装

1、下载PXE启动文件

cd /boot/
wget http://mirrors.163.com/centos/6.3/os/x86_64/images/pxeboot/{vmlinuz,initrd.img}

ps:这是64位的PXE
2、编辑grub

vi /boot/grub/grub.conf

设置从PXE安装项启动,注意序号是从0开始计算的

default=0

加上启动失败的处理项:
若PXE安装启动失败,启动第2条,也就是原系统

fallback 1

加上PXE安装启动项

title VNC Install
root (hd0,0)
kernel /vmlinuz vnc vncpassword=密码 headless ks=file:/dev/null ip=ip地址 noipv6 netmask=子网掩码 gateway=网关 dns=dns服务器ip ksdevice=eth0 method=http://mirrors.163.com/centos/6.3/os/x86_64/ lang=en_US keymap=us
initrd /initrd.img

3.重启

reboot

重启需要一段较长的时间主要看网速.

4.使用vnc客户端连接,此处使用端口1,密码则是第三步输入的密码.

ip:1

CentOS6 yum安装SVN配置http协议

使用yum命令安装httpd和svn。(以下命令都使用root用户执行)

yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql

修改

vi /etc/httpd/conf/httpd.conf

将KeepAlive改为on。该修改可以保持http连接,提高SVN访问性能。

在/home目录下创建svndata目录,作为SVN版本库的父目录。

mkdir /home/svndata

进入svndata目录,使用vi创建文件:

cd /home/svndata
vi authz.conf

用于存放访问权限。

在svndata目录下使用htpasswd命令创建用户。**-c参数表示创建密码文件,之后创建用户不需要带-c参数。**

htpasswd -c /home/svndata/authfile user
htpasswd /home/svndata/authfile user1

在svndata目录下使用使用命令创建库。也可以直接在其他目录下创建,但要指定版本库目录全路径。

svnadmin create /home/svndata/test

对svndata目录赋权限,赋给apache用户。

chown -R apache:apache /home/svndata/

添加

vi /etc/httpd/conf.d/subversion.conf

如下内容:

<Location /svn>
   DAV svn
   SVNParentPath /home/svndata
#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
      AuthType Basic
      AuthName "Authorization SVN"
      AuthUserFile /home/svndata/authfile
      AuthzSVNAccessFile /home/svndata/authz.conf
      Require valid-user
#   </LimitExcept>
</Location>

配置访问权限。修改

vi /home/svndata/authz.conf

。如下表示user拥有test项目的读写权限。

[test:/]
user = rw
[test:/file1]
user1 = rw

启动apache,并关闭防火墙。

service httpd start
/etc/rc.d/init.d/iptables stop

增加开机自启动apache服务。

chkconfig httpd on

永久关闭防火墙(重启后生效)。

chkconfig iptables off

关闭SELINUX,否则会在日志(/etc/httpd/logs/error_log)中报:(13)Permission denied: Could not open *** file,导致无法正常访问SVN,或无法上传文件。关闭SELINUX的方法,修改

vi /etc/selinux/config

,把 SELINUX=enforcing 注释掉,并新加一行:

#SELINUX=enforcing
SELINUX=disabled

大功告成输入http://localhost/svn/test