centos安装php-soap拓展

php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,使用的人更多,所以项目中也是用的soap

1、安装soap

#yum install php-soap -y

2、php加载soap扩展
#vi /etc/php.d/soap.ini
extension=”soap.so”
#:wq! #保存退出

3、重新加载php-fpm
#service php-fpm reload
如果是apache 则 #service httpd restart

foreach中unset引用变量使用错误

$arr = array(
        array('a'=>1,'b'=>2,'c'=>3,'d'=>4),
        array('a'=>5,'b'=>6,'c'=>7,'d'=>8),
        array('a'=>9,'b'=>10,'c'=>11,'d'=>12),
        array('a'=>13,'b'=>14,'c'=>15,'d'=>16),
        array('a'=>17,'b'=>18,'c'=>19,'d'=>20),
        array('a'=>21,'b'=>22,'c'=>23,'d'=>24),
    );
foreach ($arr as &$val) {
    $temp = $val['a']%2;
    if(1 == $temp) {
        unset($val);
    }
}
print_r($arr);

这段代码,本想销毁掉满足判断条件中,$arr对应的键值对。查看结果,没有销毁。查看了一下手册,在foreach中使用foreache($arr as &$val)引用模式,unset($val),只是取消引用,并不是销毁键值对。

centos搭建LNMP

转载者语:

转载于:http://www.osyunwei.com/archives/2353.html

原文标题:CentOS 6.2yum安装配置lnmp服务器(Nginx+PHP+MySQL)

本人以CentOS6.5亲测成功.

以下是原文.

————————————————————————————————————————————

准备篇:

yum install make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd  kernel keyutils  patch  perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch freetype-devel

1、配置防火墙,开启80端口、3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:

继续阅读“centos搭建LNMP”

值得深思的PHP面试问题

 

Q1

第一个问题关于弱类型

$str1 = ‘yabadabadoo’;
$str2 = ‘yaba’;
if (strpos($str1,$str2)) {
    echo “\”” . $str1 . “\” contains \”” . $str2 . “\””;
} else {
    echo “\”” . $str1 . “\” does not contain \”” . $str2 . “\””;
}

正确运行的输出结果:

“yabadabadoo” does not contain “yaba”

strpos是返回字符串str2str1的位置,没有找到则返回false然而实际上这次返回了0而在if语句中0也被当作false,所以我们需要对false做类型判断,正确的代码如下:

$str1 = ‘yabadabadoo’;
$str2 = ‘yaba’;
if (strpos($str1,$str2) !== false) {
    echo “\”” . $str1 . “\” contains \”” . $str2 . “\””;
} else {
    echo “\”” . $str1 . “\” does not contain \”” . $str2 . “\””;
}

需要注意的是我们使用了!==,在php 和 JS中= !相对== 更为严格需要要求数据类型一致。

继续阅读“值得深思的PHP面试问题”

heredoc语法

heredoc语法为输出大量文本提供了一种便利的方式。它不是使用双引号或单引号来界定字符串,而是采用了两个相同的标识符。

$website = ‘http://www.mangolau.com’;
echo <<<HTML
<p>What a good day!<a href=”$website”>Click here</a></p>
HTML;

关于这个例子,有几个值得注意的地方。

开始和结束标识符必须相同,此示例中的开始和结束标识符是HTML,可以选择你喜欢的任何开始和结束标识符,但要求它们必须完全相同。唯一的限制是该标识符只能由字母数字和下划线组成,而且前面不能有空格或任何其他多余的字符。此外,开始或结束标识符后面的任何空格都会导致语法错误。

PHP编程中10个最常见的错误

错误1:foreach循环后留下悬挂指针

在foreach循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法:

$arr = array(1, 2, 3, 4);

foreach ($arr as &$value) {

$value = $value * 2;

}

// $arr is now array(2, 4, 6, 8)

这里有个问题很多人会迷糊。循环结束后,$value并未销毁,$value其实是数组中最后一个元素的引用,这样在后续对$value的使用中,如果不知道这一点,会引发一些莫名奇妙的错误:)看看下面这段代码:

$array = [1, 2, 3];

echo implode(‘,’, $array), “\n”;

foreach ($array as &$value) {} // by reference

echo implode(‘,’, $array), “\n”;

foreach ($array as $value) {} // by value (i.e., copy)

echo implode(‘,’, $array), “\n”;

上面代码的运行结果如下:

1,2,3

1,2,3

1,2,2

你猜对了吗?为什么是这个结果呢? 继续阅读“PHP编程中10个最常见的错误”