美文网首页我爱编程
windows安装php,apache,mysql及其配置

windows安装php,apache,mysql及其配置

作者: 采姑娘的大白菜 | 来源:发表于2017-05-24 15:21 被阅读0次

    PHP

    下载

    下载解压包

    选择适合你的版本下载,我的是64位线程安全的。
    解压。

    修改配置

    接下来将php.ini-production文件重命名为php.ini,修改设置。

    ; On windows:
    extension_dir = "ext"
    
    ;apache不识别php-ini中的相对路径,最好写上绝对路径
    extension_dir = "E:\study-environment\php\ext"
    
    
    
    ;extension=php_bz2.dll
    extension=php_curl.dll
    ;extension=php_fileinfo.dll
    extension=php_ftp.dll
    extension=php_gd2.dll
    ;extension=php_gettext.dll
    ;extension=php_gmp.dll
    ;extension=php_intl.dll
    extension=php_imap.dll
    ;extension=php_interbase.dll
    ;extension=php_ldap.dll
    extension=php_mbstring.dll
    ;extension=php_exif.dll      ; Must be after mbstring as it depends on it
    extension=php_mysqli.dll
    ;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
    ;extension=php_openssl.dll
    ;extension=php_pdo_firebird.dll
    extension=php_pdo_mysql.dll
    ;extension=php_pdo_oci.dll
    ;extension=php_pdo_odbc.dll
    ;extension=php_pdo_pgsql.dll
    ;extension=php_pdo_sqlite.dll
    ;extension=php_pgsql.dll
    ;extension=php_shmop.dll
    
    ; The MIBS data available in the PHP distribution must be installed.
    ; See http://www.php.net/manual/en/snmp.installation.php
    ;extension=php_snmp.dll
    
    extension=php_soap.dll
    extension=php_sockets.dll
    ;extension=php_sqlite3.dll
    ;extension=php_tidy.dll
    ;extension=php_xmlrpc.dll
    ;extension=php_xsl.dll
    
    
    #指定站点路径
    查找”doc_root”,修改为doc_root = "E:\study-environment\www"
    
    
    加入环境变量

    把php加入环境变量:
    Control Panel\All Control Panel Items\System----->Advanced system settings----->Environment Variables----->System variables----->Path
    添加php的安装路径,如:
    E:\study-environment\php

    Apache

    下载

    下载解压包

    注意:在Windows上,确保PHP(5.5以上)与Apache(2.4)可以协同运作的唯一方法是Apache和PHP都是32位(x86)或64位(x64) )和Apache和PHP都是线程安全(TS)。 使用非线程安全(NTS)不适用,并且线程安全版本捆绑了所需的Apache模块PHP“php7apache2_4.dll”。 NTS版本没有这个模块。
    还要注意检查它们是否都使用相同版本的Visual Studio(例如VC14)进行编译。

    修改配置

    下载完后,解压,找到conf/httpd.conf,进行配置。

    Define SRVROOT "/Apache24"
    ServerRoot "${SRVROOT}"
    改为
    Define SRVROOT "E:\study-environment\Apache"  ##你的安装目录
    ServerRoot "${SRVROOT}"
    
    
    #修改端口的配置
    #Listen 12.34.56.78:80
    Listen 80
    
    ServerName localhost:80
    
    
    #设置php7module
    #查找”LoadModule”,新增行,输入加载的php模块信息
    LoadModule php7_module "E:\study-environment\php\php7apache2_4.dll"
    
    #修改默认站点
    #DocumentRoot "${SRVROOT}/htdocs"
    #<Directory "${SRVROOT}/htdocs">
    DocumentRoot "E:\study-environment\www"
    <Directory "E:\study-environment\www">
    
    #查找”AddType”,新增行,输入允许执行php的文件类型
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .html
    
    #查找”DirectoryIndex”,更改默认首页为
    DirectoryIndex index.php index.html
    
    #注意使用英文字符,使用中文字符会解析出错
    
    
    

    保存,win+x打开命令提示符(管理员)(以管理员方式运行),定位到bin目录,安装Apache:httpd -k install

    启动

    Apache常见命令操作

    #Start Apache 
    httpd -k start 
    
    #Stop Apache
    httpd -k stop
    
    #Restart Apache  
    httpd -k restart
    
    #Uninstall Apache Service  
    httpd -k uninstall
    
    #Test Config Syntax  
    httpd -t
    
    #Version Details 
    httpd -V
    
    #Command Line Options List  
    httpd -h
    
    

    启动时可能会发生错误。

    (OS 10048)Only one usage of each socket address (protocol/network address/port)
    is normally permitted.  : AH00072: make_sock: could not bind to address [::]:443
    
    (OS 10048)Only one usage of each socket address (protocol/network address/port)
    is normally permitted.  : AH00072: make_sock: could not bind to address 0.0.0.0:
    443
    AH00451: no listening sockets available, shutting down
    AH00015: Unable to open logs
    
    

    这是因为443端口被占用了,服务启动不了,有两个解决方法

    方法一
    可以在conf/extra/httpd.conf查找 Include 
    如果找到
    
    #Include conf/extra/httpd-ssl.conf
    Include conf/extra/httpd-ahssl.conf
    
    说明 https 应用的配置文件是conf/extra/httpd-ahssl.conf 
    打开该文件,修改https端口
    
    Listen 443 https
    
    
    
    方法二
    1.查看所有的端口占用情况
    C:\>netstat -ano
    2.查看指定端口的占用情况
    C:\>netstat -aon|findstr "443"
    协议    本地地址                     外部地址               状态                   PID
      TCP    127.0.0.1:443         0.0.0.0:0              LISTENING       2016
    
    端口被进程号为2016的进程占用,继续执行下面命令: (也可以去任务管理器中查看pid对应的进程)
    3.查看PID对应的进程
    C:\>tasklist|findstr "2016"
     映像名称                       PID 会话名              会话#       内存使用
     ========================= ======== ================
      tor.exe                     2016 Console                 0     16,064 K
    
    
    tor进程占用了443端口。
    
    4.结束该进程
    C:\>taskkill /f /t /im tor.exe
    
    
    测试

    启动了Apache后,在站点文件”E:\study-environment\www”内新建文件”index.php”,添加:

    <?php
     phpinfo();
    ?>
    
    

    重启Apache,在浏览器访问apache配置的端口。

    后续配置

    apach配置多个端口。
    在httpd.conf中设置监听多个端口。

    Listen 8000
    Listen 8099
    Listen 8077
    
    

    启用httpd-vhosts.conf设置。

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    

    注意,在http.conf中设置的DocumentRoot,在httpd-vhosts.conf配置的所有的虚拟目录都应该在这个目录之下设置。
    比如我的DocumentRoot

    DocumentRoot "E:\study-environment\www"
    

    然后在httpd-vhosts.conf中配置目录和地址:

    #NameVirtualHost *:8099  //2.4已弃用
    <VirtualHost *:8099 >
    ServerName 0.0.0.0:8099
    DocumentRoot "E:\study-environment\www\8099"
    </VirtualHost>
    #NameVirtualHost *:8077 //2.4已弃用
    <VirtualHost *:8077>
    ServerName localhost:8077
    DocumentRoot "E:\study-environment\www\8077"
    </VirtualHost>
    
    

    新建index.php访问测试

    Mysql

    下载

    下载安装包

    直接安装,设置root密码。

    配置php数据库模块

    php_mysql由于安全问题被弃用了,可以用php_mysqli和php_pdo_mysql代替
    详见这里

    5.x开始,PHP连接MYSQL无论使用哪种方式都是使用的mysqlnd驱动。包括mysql_*、pdo_mysql、mysqli。

    mysqlnd和mysql/mysqli/pdo_mysql关系打比方说 mysqlnd是金属,而mysql mysqli pdo_mysql只是金属制品。
    
    例:使用PDO连接mysql
    
    $pdo = new PDO('mysql:host=localhost;dbname=database_name;port=3306','用户名','密码');
    $pdo->exec('set names utf8');
    
    $stmt = $pdo->prepare("select * from table where id =:id");
    $stmt->bindValue(':id',1,PDO::PARAM_INT);
    $stmt->execute();
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    $rows = $pdo->query("select * from table where id = 1")->fetchAll(PDO::FETCH_ASSOC);
    
    

    相关文章

      网友评论

        本文标题:windows安装php,apache,mysql及其配置

        本文链接:https://www.haomeiwen.com/subject/txwgxxtx.html