2014年4月

PHP 什么是语言构造器 什么是可变函数

今天偶然间发现水煮鱼中的PHP 中数组函数 isset 效率比 array_key_exists 更高是这么写的:

由于 isset 属于 php 中的语言结构,而 array_key_exists 是函数,所以 isset 更快。并且 isset 在其他语言中也存在,更具可读性。

顿时很是疑惑——什么,isset竟然不是函数?而至于处理效率isset更快,倒变得不重要了(至少我一直使用isset,几乎没有关注过array_key_exists,具体可以见文章)

- 阅读剩余部分 -

C define与const的不同

其实这个是困惑了我好久的问题,没想到在上机课做到的题里找到了答案——我的困惑是:#defineconst到底有什么区别。

题目:

#define N 2 
#define M N+1 
#define NUM 2*M+1 
int main(void) 
{  int i; 
   for(i=1;i<=NUM;i++)  printf(“%d\n”,i); 
} 

该程序中的for循环执行的次数是( )
A) 5 B) 6 C) 7 D) 8

答案是6,跑过以后怎么都不理解,这是因为忽略了#define的重大不同。

- 阅读剩余部分 -

利用.htaccess去除CodeIgniter的index.php

个人用的方法,感觉还不错:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /poster
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>

如果在根目录,那么把/poster改成/就行了,如果在http://xxx.xxx/aaa 则把/poster改成/aaa

注:
第1行 第9行 判断rewrite模块是否加载,没有加载的话这几行代码不起作用
第2行设置Linux软连接
以上几行去掉无妨。

CentOS 安装phpmyadmin

首先下载一下phpmyadmin:
http://www.phpmyadmin.net/home_page/index.php
改个方便点的名字比如pmn
然后上传到/var/www/html,centos下输入:

cd /var/www/html
tar xvfz pmn.tar.gz

安装并解压,将文件夹名字修改成pmn
输入

cd pmn

在pmn下(既解压出来的phpmyadmin文件夹里面)将config.sample.inc.php重命名为config.inc.php

然后重启apache:

service httpd restart

就可以访问了。

如果遇到了问题,可以看这两篇:
phpmyadmin 出现The mbstring extension is missing解决方法
phpmyadmin提示:配置文件权限错误,无法写入!解决方法

改变Apache默认端口

因为nginx占了80端口的关系,不得不把apache的端口修改到别的地方,位置是个问题:/etc/httpd/conf/httpd.conf(CentOS下)

找到了以后找:Listen,把数字改掉,保存,然后重启apache,就没什么问题了,当然,还得在端口列表开启端口。

/etc/init.d/httpd restart   # restart apache

开启端口可见:http://codesky.me/archives/centos-table-port-open.wind

CentOS yum安装Apache

yum安装一如既往的方便:

首先:

yum install httpd

回车后,yum会提示当前已经安装的httpd版本,并自动更新;如果没有安装,则会自动安装。注意在yum安装过程中输入“Y”以确认安装。
Apache安装完成后,手动启动Apache2:

/etc/init.d/httpd start

然后安装一下相关模块(lamp啦)

yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

安装完重启:

/etc/init.d/httpd restart

最后设置开机启动:

chkconfig --levels 2345 httpd on
chkconfig --levels 2345 mysqld on

当然可能还需要别的扩展模块:

yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql

最后介绍相关配置与环境
Apache主配置文件:/etc/httpd/conf/httpd.conf
Apache主配置目录,可以将不同类型的配置分门别类放入这个目录中:/etc/httpd/conf.d/
Apache网站根目录:/var/www/html/
Apache日志文件目录:/var/log/httpd
MySQL的my.cnf配置文件:/etc/my.cnf
MySQL数据库文件位置:/usr/lib/mysql

如果需要改变端口,可见:http://codesky.me/archives/apache-change-port.wind

From:http://www.bootf.com/227.html

CentOS 开启端口

CentOS yum配置LNMP服务器(Nginx+PHP+MySQL)中讲过端口的问题,其实还是修改,单独提出来mark一下。

 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端口通过防火墙)

数字改成你自己要开的端口就行了。
然后我们保存设置,重启就OK了。

    /etc/init.d/iptables restart #最后重启防火墙使配置生效