php开发总结

./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>、汉化包下载地址:

http://eclipse.org/downloads/download.php?file=/technology/babel/update-site/R0.10.1/babel-R0.10.1-juno.zip

解压后的文件夹名为 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 下载地址:

http://museum.php.net/php5/

找到相应版本,如 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 之前需要依次安装 APRAPR-util 、APR-iconv ,下载地址:

http://apr.apache.org/download.cgi

wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.bz2
wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.bz2
wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.bz2

安装 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/ 目录下, 再重新配置编译即可。

直接参考官方的安装说明:http://httpd.apache.org/docs/2.4/install.html

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 服务在各个运行级别下的状态。

 

安装 https 模块

  安装 mod_ssl.so 模块,可以在安装 apache 时指定,如果在安装 apache 时未指定,又不想重装的话,可以进行动态安装,进入到 apache 源码路径(注意是源码路径,不是安装路径),如 

/opt/httpd-2.4.20/modules/ssl ,然后执行:

/usr/local/apache2/bin/apxs -a -i -c -L/usr/lib/openssl/engines/lib -c *.c -lcrypto -lssl -ldl       # 注:/usr/local/apache2 是安装路径

 

  安装完成后,重启 apache 服务即可生效。

   接下来生成 https 需要的密钥证书文件:

openssl genrsa 1024 > server.key        //生成密钥
openssl req -new -key server.key > server.csr        //生成证书请求文件,该步骤需要按提示提交一些信息
openssl req -x509 -days 3650 -key server.key -in server.csr > server.crt    //生成证书

 

  将上面生成的文件,放到 /usr/local/apache2/conf 目录下(假设apache的安装目录是 /usr/local/apache2),然后修改 extra/httpd-ssl.conf 文件,删掉下面两行的注释,让其可用:

SSLCertificateFile /apache/conf/server.crt
SSLCertificateKeyFile /apache/conf/server.key 

  修改 httpd.conf 文件,载入 ssl 模块:

LoadModule ssl_module         modules/mod_ssl.so

 

  导入 ssl 配置文件

Include conf/extra/httpd-ssl.conf

  配置 VirtualHost

<VirtualHost *:80>
   ServerName www.yourdomain.com
   DocumentRoot htdocs

   <Directory wiki>
     Order deny,allow
     Allow from all
   </Directory>
</VirtualHost>

<VirtualHost *:443>
   ServerName www.yourdomain.com
   DocumentRoot htdocs

   <Directory PasswordGame>
     Order deny,allow
     deny from all
   </Directory>
</VirtualHost>

 

  配置完后,重启 apache 服务即可。

 

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 字段指明的路径来查看。

安装Mysql5.7 需要boost1.59.0,先下载boost解压,然后使用下面命令安装:

./bootstrap.sh --prefix=/usr/local/boost
./b2
./b2 install

 

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    #通过该命令查看

 

CentOS6.8安装 mysql5.7.18完成后,初始化mysql默认表的方法改成:

mysqld --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
//命令执行完毕之后,注意会给出默认的 root 的密码。如果没看到,可以删除 data 目录里的数据,再执行一遍重新生成。

 

启动mysql服务后,使用mysql命令连接会报“段错误”,可以参考:http://www.111cn.net/database/mysql/79897.htm 及 https://bugs.launchpad.net/percona-server/+bug/1201123

安装完mysql 之后,登陆以后,会提示修改密码:

You must reset your password using ALTER USER statement before executing this statement

 

这样操作:

SET PASSWORD = PASSWORD('new password');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;

 

设置远程连接:

use mysql;
Grant all on *.* to 'root'@'%' identified by 'root用户的密码' with grant option;
flush privileges;

 

 

3、PHP 配置

下载地址:

http://www.php.net/downloads.php

官方安装文档:http://php.net/manual/zh/install.unix.apache2.php

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql=shared,mysqlnd
make -j
make install

 

注意,php7.1.4 的 --with-config-file-path 设定 php.ini 目录不起作用,虽然最后通过 phpinfo 查看时,显示的目录是是对的,但实际并找不到 php.ini,然后最好还是维持默认值好了,默认目录在 /usr/local/php/lib。

如果提示找不到 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? phpinfo(); ?>

 

将源码文件中的 php.ini-development 拷贝到 /usr/local/php/etc/php.ini 

默认 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"]."&nbsp;&nbsp;&nbsp;".$row["roomid"]."&nbsp;&nbsp;&nbsp;".$row["name"]."<hr>";
}
mysql_close($conn);
?>

如果执行  /usr/local/php/bin/phpize 时提示:

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

 则使用命令即可:

yum install m4
yum install autoconf

如果是 php7,则已经没有 mysql 扩展了,运行旧程序会显示警告,所以要兼容旧程序,可以安装一下。到 http://git.php.net/?p=pecl/database/mysql.git;a=summary 手动下载安装 mysql 扩展到 php-7.1.4/ext/ 目录解压,然后像上面一样执行即可。

参考:http://blog.csdn.net/shengerjianku/article/details/55060945

 

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 --with-pdo-mysql=/usr/local/mysql
make 
make install

如果在 make 时报找不到 mysql.h 的错误,请参考下面的方法,测试可行:

这是因为在编译时需要mysql的头的文件,而它按默认搜索找不到头文件的位置,所以才出现这个问题.所以要将 /usr/local/mysql/include/ 目录下的mysql头文件链接到 /usr/local/include/ 的目录下:
ln -s /usr/local/mysql/include/* /usr/local/include/
然后再make和make install,pdo_mysql模块加进去了.

 

然后在 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 手册:

http://www.php.net/manual/zh/

posted @ 2013-10-28 14:25  轻典  阅读(669)  评论(0编辑  收藏  举报