• 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:AppServwww",此时就可以立即进行 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 ,放到 php5ext 目录下,修改 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/

  • 相关阅读:
    Redis进阶教程aof(append only file)日志文件
    鼠标移动之hook学习
    SQL Server 2008:示例数据库安装
    接收IWebBrowser2的自动化事件
    什么是DOCTYPE 它对网页起何作用?
    Hack Attack : Install Leopard on your PC in 3 easy steps!
    How to customise the TWebBrowser user interface (part 1 of 6)
    Asp.Net 数据分页
    仿Ajax弹出半透明层 (支持IE FF)
    有关Visual Studio 2008 SP1和SQL Server 2008的一些说明
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/3392359.html
Copyright © 2020-2023  润新知