./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=shared,mysqlnd && make -j4 && make install
一、Windows 下环境配置
为了快速入门,不建议初学者在工具上花费大量时间,可以安装整合环境 ZppServ 或 XAMPP ,这里以 ZppServ 为例。
1、下载 appserv:
http://www.appservnetwork.com/
我这里下载了 appserv-win32-2.5.10.exe,安装很简单,默认安装路径为 "C:\AppServ", 中间会提示输入初始 MYSQL 密码和 Apache 端口号,对于 Apache 端口号,默认是 80,建议改为 8080,除非你确定你的机器上的 80 端口没有被 IIS 或迅雷或其它程序占用。安装好 appserv 之后,在系统服务列表里,Apache2.2 和 mysql 服务会自动启动。此时在浏览器中使用 http://127.0.0.1:8080/phpinfo.php 如果能输出 php 版本信息,则表示环境配置成功,网站根目录默认为 "C:\AppServ\www",此时就可以立即进行 php 开发了。
2、最强 PHP 开发 IDE:Zend Studio (对于初学者,也可以直接跳过此工具,使用 UE 或者更简单的工具来编写)
<1>、下载 Zend Studio:
http://www.zend.com/en/products/studio/
我这里下载了 ZendStudio-without-JRE-10.1.0.msi ,从文件名可以看出来,这是不带 jre 的版本,所以你还需要从 http://www.java.com/zh_CN/ 下载 JAVA,建议使用 P2P 工具下载离线包来提升下载速度,然后分别安装好 JAVA 和 ZendStudio(安装顺序随意)。
<2>、汉化包下载地址:
解压后的文件夹名为 juno,运行 Zend Studio,先点试用打开主界面,选择Help菜单->Install New Software,调出框中点击 ”Add“->"Local...",选择 juno 文件夹,确定之后会列出可选语言包列表,选择 ”Babel Language Packs in Chinese (Simplified)“ ,不断下一步即可完成汉化。
若不能搞定可参考:http://blog.csdn.net/sn_keys/article/details/9090995 (如果此链接还未失效的话)
<3>、破解文件下载:
这个直接百度 “Zend Studio 10.1 注册机“ 下载,下载的文件包里会有三个文件,分别是 ”com.zend.php.core_10.1.0.201306250232.jar“,”sn.txt“ 和 ”keygen.jar“,一般情况下直接把第一个文件复制到 Zend Studio 安装目录下的 plugins 文件夹下,即可完成破解。如果不行,再手动使用 sn.txt 中的注册码或运行 ”keygen.jar“ 注册机来完成注册。
注意:建议先汉化再注册,否则可能会在汉化之后,发现原先已经成功注册的信息失效,且可能再也注册不成功。
3、php 的 memcache 扩展
如果项目中需要使用 memcache,先下载与 php 版本对应(主版本和次版本相同)的 php_memcache.dll ,放到 php5\ext 目录下,修改 php.ini 文件,加入一行 ‘extension=php_memcache.dll’,然后重启 Apache,然后查看一下 phpinfo,如果有memcache,那么就说明安装成功。
php_memcache.dll 下载地址:
找到相应版本,如 pecl-5.2.6-Win32.zip,解压之后里面就有 php_memcache.dll。
测试代码(前提是 memcached 服务器正常开启,关于 memcached 服务搭建见下面 Linux 环境配置部分):
<?php $mem = new Memcache(); $mem->addserver("10.10.10.10", 11211); $mem->set("mykey", "This is a test cache!", 0, 60); $val = $mem->get("mykey"); echo $val; ?>
二、linux下环境配置
1、Apache 服务器配置
下载地址:
http://httpd.apache.org/download.cgi
在安装 Apache 之前需要依次安装 APR、APR-util 、APR-iconv ,下载地址:
http://apr.apache.org/download.cgi
安装 APR使用 ./configure && make && make install , 安装后面两个使用 ./configure --with-apr=/usr/local/apr && make && make install
还需要安装 pcre,下载地址:
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
安装过程都是标准的 ./configure && make && make install
安装 Apache ,需要先 ./configure --prefix=/usr/local/apache2 --enable-module=shared,表示Apache可以动态的加载模块,否则不能使用 php。
如果提示找不到 apr 之类的,可以在 configure 时加上
./configure --prefix=/usr/local/apache2 --enable-module=shared --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr/bin/apr-1-config #--with-pcre=/usr/local/pcre
如果编译时还报错 [htpasswd] Error 1 (亚马逊云主机遇到此问题),则通过 locate 找到 libexpat.so、libm.a、libm.so,然后
ln -s /usr/lib64/libm.a /usr/lib/libm.a ln -s /usr/lib64/libm.so /usr/lib/libm.so ln -s /usr/lib64/libexpat.so /usr/lib/libexpat.so
原因是 configure 时默认找 /usr/lib/ 目录,而不是 /usr/lib64 目录。
但是!这个问题貌似用上面的方法解决不了!此时,需要把 apr 和 apr-utils 解压到 srclib/ 目录下, 再重新配置编译即可。
cp apr-1.4.8 httpd/srclib/apr -r cp apr-util-1.5.2 httpd/srclib/apr-util -r ./configure --prefix=/usr/local/apache2 --enable-module=shared
建立软链接,方便控制 apache 服务:
ln -s /usr/local/apache2/bin/apachectl /usr/bin/apachectl
控制 apache 服务的命令:apachectl start/stop/restart,(apachectl graceful 可以重启服务却不中断连接,这是最好的重启手段)如果启动过程中出现:
Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message.
则找到并编辑 httpd.conf 文件(最简单的找法,先 updatedb,再 locate httpd.conf,或者通过 /usr/bin/apachectl -V 来查看相关信息),找到 "#ServerName www.example.com:80" 这一行,修改成 "ServerName `自己的IP`:80" ,然后重启 apache 服务即可。
安装 Apache 为 httpd 系统服务:
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
这样就可以使用 service httpd start/stop/restart 来控制 apache 服务了。接下来将 httpd 服务加入到开机启动:
chkconfig --add httpd
会提示 "httpd 服务不支持 chkconfig",接下来添加下支持,vim /etc/init.d/httpd ,加入下面两句:
#chkconfig:345 85 15 #description:Start and stop the Apache HTTP Server
chkconfig:345 85 15 中的 345 代表在设置在那个level中是on的,如果要全部 off 就设为"-",如:chkconfig: - 85 15,后面两个数字代表S和K的默认排序号(启动:S 杀死:K)
再重新执行:
chkconfig --add httpd
chkconfig httpd on
使用 chkconfig --list httpd 检查 httpd 服务在各个运行级别下的状态。
2、MYSQL 服务器配置
下载地址:
http://dev.mysql.com/downloads/mysql
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci make make install
此处的 cmake 参数(具体还有哪些,我也不知道……待弄清):
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录 -DINSTALL_DATADIR=/usr/local/mysql/data //数据库存放目录 -DDEFAULT_CHARSET=utf8 //使用utf8字符 -DDEFAULT_COLLATION=utf8_general_ci //校验字符 -DEXTRA_CHARSETS=all //安装所有扩展字符集 -DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
执行 /usr/local/mysql/support-files/mysql.server start 会报错,报错信息可以通过 /etc/my.cnf 中的 log-error 字段指明的路径来查看。
mysql 的所有者默认是 mysql ,所以先新建一个 mysql 用户:
useradd mysql
再次启动服务,仍会报错,查看日志,可以发现是 mysql.user 表找不到,下面来安装一下默认表:
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
如果还不能启动起来,报下面的错:
Can't start server : Bind on unix socket: Permission denied Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock
(直接编辑 /etc/my.cnf 文件,设置 user=root 貌似也可以直接解决 )
且 /var/lib/mysql 这个目录里没有生成 mysql.sock 文件,则可能是没有权限,设置一下:chown -R mysql:mysql /var/lib/mysql/ 即可,若还有权限问题,就干脆直接 chown -R mysql:mysql /usr/local/mysql
如果还是启动不起来,日志里显示:
Table 'mysql.plugin' doesn't exist Table 'mysql.user' doesn't exist
则编辑 /etc/my.cnf 文件,看 datadir 是否设置正确,改为 datadir=/usr/local/mysql/data/ ,此时再执行 /usr/local/mysql/support-files/mysql.server start 就可以正常启动服务了。
执行 /usr/local/mysql/bin/mysql 可以直接进入命令行,如果提示错误:
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
则做一个软链接之后再次启动 mysql 客户端即可:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
执行下面这句话,可以在 mysql.user 表中新建一条记录,开通远程权限:
grant all privileges on *.* to root@'%' identified by "123456";
该命令格式为:grant 权限1,权限2,…权限n on 数据库名.表名 to 用户名@用户地址 identified by "密码";
权限共有 14 个:select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file
如果是赋予所有权限,可以直接 "all privileges" 或 "all"
将 mysql 服务加入到开机启动:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on // chkconfig --list mysqld #通过该命令查看
3、PHP 配置
下载地址:
http://www.php.net/downloads.php
安装方法:
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=shared,mysqlnd && make -j4 && make install
如果提示找不到 xml2-config ,就 yum install libxml2-devel 重试即可。
安装好之后,配置 httpd.conf 来让 Apache 支持 php,找到 <IfModule mime_module> 节点内加上:
AddType application/x-httpd-php .php # phps 文件就是 php 的源文件,用于提供用户查看 php 代码,因为用户无法通过浏览器>直接查看 php 文件的内容,所以通过 phps 文件代替 # AddType application/x-httpd-php-source .phps
通过浏览器查看 phpinfo.php,发现 php.ini 的目录为 /usr/local/php/lib ,但实际上该目录并没有此文件,把源码文件中的 php.ini-development 拷贝到 /usr/local/php/lib/php.ini 即可。
但是此时,你会发现重启 apache 服务之后,再通过浏览器查看 phpinfo.php 时,会显示空白,这是因为 php.ini 里没有启用短标签模式(正常标签为 <?php ... ?> ,短标签为 <? ... ?>),找到 short_open_tag 把值改成 On 即可。
4、php 的 mysql 扩展
进入到 php 源码目录的 ext/mysql 下(我这里是 /opt/php-5.5.5/ext/mysql ),执行:
/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/local/mysql/ make make install
会提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20121212/
查看上面提示的目录里有一个 mysql.so 文件,这个就是 php 的 mysql 的扩展文件,加入到 php.ini 中即可:extension=mysql.so (确保上面的路径是 extension_dir 所在路径,否则可将 mysql.so 复制到 extension_dir 所在路径下)。通过在浏览器中查看 phpinfo.php ,可看到 mysql 扩展已经安装成功。
测试代码:
<?php $conn = mysql_connect("10.10.10.10","test","123456") or die("can't connect mysql: ".mysql_error()); echo "connect mysql success<br />"; mysql_select_db("yychat_new"); $sql = "select * from room_vip_apply"; mysql_query("SET NAMES 'UTF8'"); $result = mysql_query($sql,$conn); while($row=mysql_fetch_array($result)) { echo $row["userid"]." ".$row["roomid"]." ".$row["name"]."<hr>"; } mysql_close($conn); ?>
5、memcached 服务器配置
相应安装包下载地址:
wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
wget https://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
安装 memcached 需要先安装 libevent,两个安装教程都是标准的 ./configure && make && make install ,安装好之后,使用命令 memcached -d -uroot 即可启动服务。
memcached 启动参数:
-u 以指定用户的身份运行,貌似只能以 root 用户模式运行。 -d 后台运行 -l 指定监听地址,默认是 INADDR_ANY,默认所有都允许,如果设为 127.0.0.1 或 localhost 表示只允许本机访问。 -p 指定端口号,默认为 11211。 -m 指定最大可使用内存(MB),默认是 64MB。
接下来测试一下服务是否正常运行,telnet 127.0.0.1 11211 连接到 memcached 服务之后,有五个命令:set(如果不存在则插入,存在则更改)、add(不存在则插入,存在则失败)、replace(存在则更改,不存在则失败)、get、delete,前三个命令的格式一样,都为
command <key> <flags> <expiration time> <bytes>
后面两个命令的格式一样,都为
command <key>
参数解释如下:
key //键值 value //存储的值(始终位于第二行) flags //客户机使用它存储关于键值对的额外信息,不明白就写0吧 expiration time //最大存储时长(单位为秒,0 表示永远) bytes //存储字节数
其它命令:
stats //查看 memcached 运行状态 flush_all //清空缓存中所有数据
6、php 的 memcache 扩展
安装包下载地址:
http://pecl.php.net/package/memcache
解压后进入目录,运行 phpize ,会在当前目录生成 configure 文件。执行:
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config && make && make install
之后,会出现:
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20121212/
在 php.ini 中添加
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20121212/" extension=memcache.so
然后重启 apache 服务,浏览 phpinfo.php 页面,即可找到 memcache。
7、php 的 svn 扩展
安装包下载地址:
http://pecl.php.net/package/svn
解压后进入目录,运行 phpize ,会在当前目录生成 configure 文件。执行:
./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
可能会提示需要 svn_client.h 文件,则
yum install subversion-devel
然后编辑 php.ini 把生成的 svn.so 配置上去,重启服务即可。
使用的参数文档见:http://php.sinaapp.com/manual/zh/book.svn.php
8、BUGFREE搭建
可以从下面的地址下载 3.0.3 版本,其它版本我没有试过:
http://www.7edown.com/soft/down/soft_30888.html
解压到网站目录,浏览器访问,会检测环境,提示需要安装 pdo_mysql 扩展和目录权限。后者很简单,chmod 了事。前者从下面地址下载:
http://pecl.php.net/package/PDO_MYSQL
解压后操作步骤如下:
/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make install
然后在 php.ini 文件中添加:extension=pdo_mysql.so ,重启服务即可。
bugfree 一键安装好之后,建立新帐号登录会提示“无产品访问权限”,只需要用管理员帐号登录后,添加一个产品,和用户组,然后把用户分配到某个产品和用户组,就可以正常登陆了。
三、中文乱码:
如果 echo 等输出中文为乱码,检查一下在 html 中是否有下面这行:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
如果连接 mysql 数据库读出的中文数据显示为乱码,在查询数据之前,先使用下面这行:
mysql_query("SET NAMES 'UTF8'");
四、常用函数
1、获取当前时间
date_default_timezone_set('Asia/Shanghai'); echo (date("Y年m月j日 H:i:s"));
五、测试
/usr/local/apache2/bin/ab -n 10000 -c 10 http://211.152.52.106:8080/phpinfo.html
ab 是 apache 自带的性能测试工具(Apache Benchmarking Tool),-n 参数表示模拟访问的次数,-c 参数表示并发访问的用户数目。
附录
httpd.conf 的配置要点:
User yugd
Group yugd
然后,把htdocs目录全部设置为 chown yugd:yugd htdocs -R
这样用到 .pem 证书时,就可用了,证书也要设为 yugd:yugd ,且证书必须为 chmod 600 *.pem,这个要注意。
DocumentRoot 修改网站根目录
listen 80 监听端口号
ServerName 211.152.152.126:80 ip 和 port
php 手册: