php 不用apache_php可以不用apache运行 - CSDN
精华内容
参与话题
  • 有时需要测试php代码,配置Apache比较麻烦,下面是快速测试的方法。 1、用管理员身份运行命令提示符 2、进入php的安装路径中,输入 php -a 3、进入交互shell后,键入php代码,按回车键运行。  ...

    有时需要测试php代码,配置Apache比较麻烦,下面是快速测试的方法。

    1、用管理员身份运行命令提示符

    2、进入php的安装路径中,输入

    php -a

    3、进入交互shell后,键入php代码,按回车键运行。

     

    展开全文
  • 搭建PHP开发环境(Apache+PHP+MySQL)

    万次阅读 多人点赞 2018-06-25 10:25:32
    简介:总结在Windows环境搭建PHP开发环境(Apache+PHP+MySQL) 安装Apache 1、下载Apache,地址:http://www.apachelounge.com/download/,如下图: 2、解压压缩包,最好放到磁盘根目录,不然配置时容易报路径...

    简介:总结在Windows环境搭建PHP开发环境(Apache+PHP+MySQL)

    安装Apache

    1、下载Apache,地址:http://www.apachelounge.com/download/,如下图:
    这里写图片描述
    2、解压压缩包,最好放到磁盘根目录,不然配置时容易报路径错误,我这里改了文件夹名,方便以后配置,如下图:
    这里写图片描述

    安装PHP

    1、下载PHP压缩包,地址:https://windows.php.net/download ,我下载的是PHP7.0 Thread Safe 版本,如下图:
    这里写图片描述
    2、解压压缩包,我解压后如下:
    这里写图片描述

    安装MySQL

    1、我安装的MySQL55版本,这里不介绍MySQL的安装方式,大家可以自己去网上搜
    2、MySQL官方下载地址:https://dev.mysql.com/downloads/installer/
    3、MySQL默认安装目录如下:
    这里写图片描述

    配置MySQL

    1、打卡环境变量页面
    具体操作如下:我的电脑-右键-属性-高级系统设置-环境变量
    2、新建MYSQL_HOME变量,值为MySQL的安装路径,如下图:
    这里写图片描述
    3、编辑path系统变量,将%MYSQL_HOME%\bin添加到path变量最后面
    4、启动MySQL,命令行输入:start mysqld,如下图:
    这里写图片描述

    配置PHP

    1、打开PHP的安装目录将php.ini-development先复制一份,然后把php.ini-development改为php.ini保存
    2、打开php.ini修改配置,查找; extension_dir = “ext” ,改为extension_dir = “ext的目录” ,比如 extension_dir = “D:\软件\php7\ext”,如下图:
    这里写图片描述
    3、打开几个常用的扩展,例如:查到extension=php_mysqli.dll,去掉前面的分号。打开下图中的这几个库:
    这里写图片描述

    配置Apache

    1、打开Apache的安装目录,找到conf文件夹下的httpd.conf文件并打开
    2、找到“Define SRVROOT”这一项,将后面引号内的值改为Apache的安装目录,如下图:
    这里写图片描述
    3、文件的末尾添加对PHP的支持及PHP的安装路径,如下图:
    这里写图片描述
    代码如下:

    # php7 support
    LoadModule php7_module "D:/软件/php7/php7apache2_4.dll"
    AddType application/x-httpd-php .php .html .htm
    
    # configure the path to php.ini
    PHPIniDir "D:/软件/php7"

    启动Apache服务

    1、设置环境变量
    右键我的电脑,属性->高级,找到最下面的环境变量按钮,选中当前用户的PATH变量,编辑新建以下条目:
    D:\Apache24\bin
    D:\软件\php7
    D:\软件\php7\ext
    2、安装apache服务
    以管理员身份打开命令行,执行httpd.exe -k install
    3、启动服务
    找到apache的安装目录下的bin文件夹,双击ApacheMonitor.exe,双击之后apache就开启了。
    可以在任务栏选择下图图标,右键打开Apache Service Monitor窗口,进行Apache服务的管理
    这里写图片描述
    4、此时在浏览器地址栏输入localhost,回车后就会出现apache的界面,如下图:
    这里写图片描述
    5、接下来在 Apache安装目录/htdocs的目录下新建一个phpinfo.php文件,内容为:

    <?php
    phpinfo();
    ?>

    保存后,在浏览器输入127.0.0.1/phpinfo.php,回车,出现关于PHP的版本信息,如下图:
    这里写图片描述

    至此php环境搭建完成,可以将php文件放入htdocs文件夹中运行了

    踩到的坑

    1、浏览器输入对应PHP地址后,无法解析php
    解决:在命令行输入httpd -t,可以查看是不是Apache的启动问题,如下图:
    这里写图片描述
    可以看到,报错信息是说找不到PHP安装目录下的php7apache2_4.dll文件,通过网上查后我下载的PHP版本不对,应该下载Thread safe 版本。

    展开全文
  • ApachePHP结合

    千次阅读 2018-09-10 12:05:28
    ApachePHP结合配置httpd支持PHP ServerName Require all denied AddType application/x-httpd-php .php //解析PHP DirectoryIndex index.html index.php[root@shuai-01 ~]# vim /usr/local/apache2.4/conf/...

    Apache和PHP结合

    配置httpd支持PHP
    ServerName
    Require all denied
    AddType application/x-httpd-php .php //解析PHP
    DirectoryIndex index.html index.php

    [root@shuai-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf
    

    修改

    找到ServerName 行,取消注释

    ServerName www.example.com:80
    

    找到Require all,将Require all denied 改为Require all granted,不然会返回403

    <Directory />
        AllowOverride none
        Require all granted
    </Directory>
    
    Require all granted
    

    找到
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    这里写图片描述

    增加

    AddType application/x-httpd-php .php  //增加这一行的目的是为了解析php文件
    

    这里写图片描述

    找到

    <IfModule dir_module>
        DirectoryIndex index.html
    </IfModule>
    

    增加为

    <IfModule dir_module>
        DirectoryIndex index.html index.php //增加一个索引页index.php
    </IfModule>
    

    这里写图片描述

    检测配置文件语法是否有错误

    [root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl -t
    Syntax OK
    

    重新加载配置文件,这个很重要(平时我们改完配置文件后,检查一下配置文件语法,然后就重启服务了。再重启服务前加上重新加载配置文件后,即使配置文件有错,也不会见你的服务进程杀掉)

    [root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
    

    配置成功

    这里写图片描述

    访问PHP其实是访问(/usr/local/apache2.4/htdocs/*.php)
    配置文件中有一行是
    这里写图片描述

    DocumentRoot "/usr/local/apache2.4/htdocs" // 这一行规定的是访问目录
    
    <Directory "/usr/local/apache2.4/htdocs"> //这一个是对访问目录进行的配置
    

    在该目录下写一个1.php 文件

    [root@shuai-01 ~]# vi /usr/local/apache2.4/htdocs/1.php
    
    <?php
    phpinfo();//这个函数可以把PHP相关信息打印出来
    ?>
    

    保存退出后开始访问

    这里写图片描述

    能解释1出来的页面就成功了,不能解释出来的就是页面源代码
    这里写图片描述

    没解释出来的问题排查

    1, 检查有没有加载PHP5的模块

    [root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl -M
    

    这里写图片描述

    2,没加载模块,看apache有没有模块文件

    [root@shuai-01 ~]# ls /usr/local/apache2.4/modules/libphp5.so 
    /usr/local/apache2.4/modules/libphp5.so
    

    3,查看apache配置文件中有没有加载libphp5.so的配置

    [root@shuai-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf
    
    LoadModule php5_module        modules/libphp5.so
    

    4,看配置文件中有没有加

    AddType application/x-httpd-php .php

    问题1:
    Apache服务开启可能回有的报错,这个其实是一个告警

    这里写图片描述

    编写配置文件(/usr/local/apache2.4/conf/httpd.conf):

    找到ServerName 行,取消注释

    ServerName www.example.com:80
    

    问题2 :
    Apache服务开启可能回有的报错

    /usr/local/apache2.4/bin/apachectl: 行 79:  3519 段错误               $HTTPD -k $ARGV
    

    这里写图片描述

    是你跑了两个PHP模块,注释掉一个。

    LoadModule php5_module        modules/libphp5.so
    #LoadModule php7_module        modules/libphp7.so
    

    问题3:

    这里写图片描述

    排查方法:

    1,看IP是否通。
    这里写图片描述
    IP通,再看80端口是否开启

    这里写图片描述
    因为Windows没有打开Telnet客户端
    打开客户端
    控制面板-程序-打开或关闭Windows功能
    这里写图片描述

    这里写图片描述

    这是就打开了Telnet,但是没通(服务端没规则iptables)
    这里写图片描述

    零时在linux下添加规则

    [root@shuai-01 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    

    此时Telnet看一下端口
    这里写图片描述
    通了

    刷新一下浏览器
    这里写图片描述

    展开全文
  • apache-php底层工作原理

    千次阅读 2016-12-28 18:39:01
    PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);PHP总共有三个模块:内核、Zend引擎、以及扩展层;PHP内核用来处理请求、文件流、错误处理等相关操作;Zend引擎(ZE)用以将...

    先看看下面这个过程:

    • 我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;
    • PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);
    • PHP总共有三个模块:内核、Zend引擎、以及扩展层;
    • PHP内核用来处理请求、文件流、错误处理等相关操作;
    • Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;
    • 扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;
    • 当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;
    • 最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

    深入探讨

    • Apache启动后,PHP解释程序也随之启动;
    • PHP的启动过程有两步;
    • 第一步是初始化一些环境变量,这将在整个SAPI生命周期中发生作用;
    • 第二步是生成只针对当前请求的一些变量设置。

    PHP启动第一步
      不清楚什么第一第二步是什么?别担心,我们接下来详细讨论一下。让我们先看看第一步,也是最主要的一步。要记住的是,第一步的操作在任何请求到达之前就发生了。

    • 启动Apache后,PHP解释程序也随之启动;
    • PHP调用各个扩展的MINIT方法,从而使这些扩展切换到可用状态。看看php.ini文件里打开了哪些扩展吧;
    • MINIT的意思是“模块初始化”。各个模块都定义了一组函数、类库等用以处理其他请求。

      一个典型的MINIT方法如下:
    PHP_MINIT_FUNCTION(extension_name){
    /* Initialize functions, classes etc */
    }
    PHP启动第二步

    • 当一个页面请求发生时,SAPI层将控制权交给PHP层。于是PHP设置了用于回复本次请求所需的环境变量。同时,它还建立一个变量表,用来存放执行过程中产生的变量名和值。
    • PHP调用各个模块的RINIT方法,即“请求初始化”。一个经典的例子是Session模块的RINIT,如果在php.ini中启用了Session模块,那在调用该模块的RINIT时就会初始化$_SESSION变量,并将相关内容读入;
    • RINIT方法可以看作是一个准备过程,在程序执行之间就会自动启动。

      一个典型的RINIT方法如下:
    PHP_RINIT_FUNCTION(extension_name) {
    /* Initialize session variables, pre-populate variables, redefine global variables etc */
    }
    PHP关闭第一步
      如同PHP启动一样,PHP的关闭也分两步:

    • 一旦页面执行完毕(无论是执行到了文件末尾还是用exit或die函数中止),PHP就会启动清理程序。它会按顺序调用各个模块的RSHUTDOWN方法。
    • RSHUTDOWN用以清除程序运行时产生的符号表,也就是对每个变量调用unset函数。

      一个典型的RSHUTDOWN方法如下:
    PHP_RSHUTDOWN_FUNCTION(extension_name) {
    /* Do memory management, unset all variables used in the last PHP call etc */
    }
    PHP关闭第二步
      最后,所有的请求都已处理完毕,SAPI也准备关闭了,PHP开始执行第二步:

    • PHP调用每个扩展的MSHUTDOWN方法,这是各个模块最后一次释放内存的机会。

      一个典型的RSHUTDOWN方法如下:
    PHP_MSHUTDOWN_FUNCTION(extension_name) {
    /* Free handlers and persistent memory etc */
    }
      这样,整个PHP生命周期就结束了。要注意的是,只有在服务器没有请求的情况下才会执行“启动第一步”和“关闭第二步”。

    下面的是用一些图示来说明的!

    PHP底层工作原理

    wps_clip_image-29471

    图1 php结构

    从图上可以看出,php从下到上是一个4层体系

    ①Zend引擎

    Zend整体用纯c实现,是php的内核部分,它将php代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕zend实现。

    ②Extensions

    围绕着zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array系列)、标准库等都是通过extension来实现,用户也可以根据需要实现自己的extension以达到功能扩展、性能优化等目的(如贴吧正在使用的php中间层、富文本解析就是extension的典型应用)。

    ③Sapi

    Sapi全称是Server Application Programming Interface,也就是服务端应用编程接口,sapi通过一系列钩子函数,使得php可以和外围交互数据,这是php非常优雅和成功的一个设计,通过sapi成功的将php本身和上层应用解耦隔离,php可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。后面将在sapi章节中介绍

    ④上层应用

    这就是我们平时编写的php程序,通过不同的sapi方式得到各种各样的应用模式,如通过webserver实现web应用、在命令行下以脚本方式运行等等。

    构架思想:

    引擎(Zend)+组件(ext)的模式降低内部耦合

    中间层(sapi)隔绝web server和php

    **************************************************************************

    如果php是一辆车,那么

    车的框架就是php本身

    Zend是车的引擎(发动机)

    Ext下面的各种组件就是车的轮子

    Sapi可以看做是公路,车可以跑在不同类型的公路上

    而一次php程序的执行就是汽车跑在公路上。

    因此,我们需要:性能优异的引擎+合适的车轮+正确的跑道

    Apache和php的关系

    Apache对于php的解析,就是通过众多Module中的php Module来完成的。

    wps_clip_image-31721

    把php最终集成到Apache系统中,还需要对Apache进行一些必要的设置。这里,我们就以php的mod_php5 SAPI运行模式为例进行讲解,至于SAPI这个概念后面我们还会详细讲解。

    假定我们安装的版本是Apache2 和 Php5,那么需要编辑Apache的主配置文件http.conf,在其中加入下面的几行内容:

    Unix/Linux环境下:

    LoadModule php5_module modules/mod_php5.so

    AddType application/x-httpd-php .php

    注:其中modules/mod_php5.so 是X系统环境下mod_php5.so文件的安装位置。

    Windows环境下:

    LoadModule php5_module d:/php/php5apache2.dll

    AddType application/x-httpd-php .php

    注:其中d:/php/php5apache2.dll 是在Windows环境下php5apache2.dll文件的安装位置。

    这两项配置就是告诉Apache Server,以后收到的Url用户请求,凡是以php作为后缀,就需要调用php5_module模块(mod_php5.so/ php5apache2.dll)进行处理。

    Apache的生命周期

    Apach的请求处理流程

    Apache请求处理循环详解 
        Apache请求处理循环的11个阶段都做了哪些事情呢?(这11个阶段难道就是nginx中对应的11个处理阶段???

    1、Post-Read-Request阶段

        在正常请求处理流程中,这是模块可以插入钩子的第一个阶段。对于那些想很早进入处理请求的模块来说,这个阶段可以被利用。

        2、URI Translation阶段 
        Apache在本阶段的主要工作:将请求的URL映射到本地文件系统。模块可以在这阶段插入钩子,执行自己的映射逻辑。mod_alias就是利用这个阶段工作的。

        3、Header Parsing阶段 
        Apache在本阶段的主要工作:检查请求的头部。由于模块可以在请求处理流程的任何一个点上执行检查请求头部的任务,因此这个钩子很少被使用。mod_setenvif就是利用这个阶段工作的。

        4、Access Control阶段 
        Apache在本阶段的主要工作:根据配置文件检查是否允许访问请求的资源。Apache的标准逻辑实现了允许和拒绝指令。mod_authz_host就是利用这个阶段工作的。

        5、Authentication阶段 
         Apache在本阶段的主要工作:按照配置文件设定的策略对用户进行认证,并设定用户名区域。模块可以在这阶段插入钩子,实现一个认证方法。

        6、Authorization阶段 
        Apache在本阶段的主要工作:根据配置文件检查是否允许认证过的用户执行请求的操作。模块可以在这阶段插入钩子,实现一个用户权限管理的方法。

        7、MIME Type Checking阶段 
        Apache在本阶段的主要工作:根据请求资源的MIME类型的相关规则,判定将要使用的内容处理函数。标准模块mod_negotiation和mod_mime实现了这个钩子。

        8、FixUp阶段 
        这是一个通用的阶段,允许模块在内容生成器之前,运行任何必要的处理流程。和Post_Read_Request类似,这是一个能够捕获任何信息的钩子,也是最常使用的钩子。

        9、Response阶段 
        Apache在本阶段的主要工作:生成返回客户端的内容,负责给客户端发送一个恰当的回复。这个阶段是整个处理流程的核心部分。

        10、Logging阶段 
        Apache在本阶段的主要工作:在回复已经发送给客户端之后记录事务。模块可能修改或者替换Apache的标准日志记录。

    11、CleanUp阶段 
        Apache在本阶段的主要工作:清理本次请求事务处理完成之后遗留的环境,比如文件、目录的处理或者Socket的关闭等等,这是Apache一次请求处理的最后一个阶段。

    LAMP架构

    从下往上四层:

    ①liunx 属于操作系统的底层

    ②apache服务器,属于次服务器,沟通linux和PHP

    ③php:属于服务端编程语言,通过php_module 模块 和apache关联

    ④mysql和其他web服务:属于应用服务,通过PHP的Extensions外 挂模块和mysql关联

    更深入的学习和了解可以查看下面:

    风雨的博客http://www.laruence.com/2008/08/12/180.html

    百度研发中心的博客http://stblog.baidu-tech.com/?p=763

    王兴宾的博客http://blog.csdn.net/wanghao72214/article/details/3916825

    展开全文
  • apache无法解析php文件,显示php源码或直接下载文件

    万次阅读 多人点赞 2020-04-02 11:00:15
    安装完重启apache就好了。 yum install mod_php 其他解决办法 罗列一下百度搜到的一些其他解决办法,本人尝试无用。 1.找到: AddType application/x-gzip .gz .tgz 在其下面添加: AddType application/x-...
  • Windows下php+Apache+mysql环境搭建

    千次阅读 2018-10-08 14:22:52
    Windows下php+Apache+mysql环境搭建 我们先进行amp下载安装: 此处我们选择目前最新版本软件下载(因我的电脑是64位操作系统,此处所有版本都选择64位下载):php7.2.1+apache2.4.29+mysql php安装包下载 登录...
  • Ubuntu搭建ApachePHP环境

    千次阅读 2018-12-06 21:20:45
    安装 Apache2: sudo apt-get install apache2 安装PHP模块: sudo apt-get install php5 安装Mysql sudo apt-get install mysql-server 其他模块安装: sudo apt-get install libapache2-mod-php5 sudo apt-...
  • 详解phpapache的关系和作用

    千次阅读 2018-04-25 14:46:00
    本文综合整理了以下两篇文章: 详细介绍phpapache的关系和作用 https://blog.csdn.net/hongweideng/article/details/41723465 以Apache服务器、php语言为例 详解动态网站的访问过程 ...网站页面主要分为静态...
  • Apache部署php项目

    万次阅读 2016-09-08 15:04:12
    背景:前几天公司用php做了个微信的mini site,由于之前没有接触过php,所以不知道该如何部署。 因为之前java项目对外都是用Apache部署的,所以就想试一下,Apache是否也可以部署php项目。 步骤:1、安装php  2...
  • windows下配置apache+php环境

    千次阅读 2018-06-11 11:03:07
    首先讲一下电脑环境与版本: 电脑:window10-X64 Apache: httpd-2.4.33-o102o-x64-vc14-r2.zip (官网下载http://www.apachelounge.com/download/)PHPphp-7.2.6-Win32-VC15-x64.zip) (官网下载...
  • apache绑定php配置

    千次阅读 2016-12-14 23:02:24
    php.ini配置extension_dir = "E:/wamp/bin/php/php5.3.13/ext/" 加载扩展目录,windows 可以用绝对目录,相对目录好点 extension=php_curl.dll curl扩展 extension=php_gd2.dll GD库扩展 extension=...
  • 看了Nginx和PHP的通信方式,就...PHP作为Apache的一个模块集成到Apache进程(httpd)运行,这种mod_php的运行模式是最常用的,这时PHP的运行跟php-cgi没有任何关系.mod_php 通过嵌入 PHP 解释器到 Apache 进程中,mod_p...
  • PHP+apache+mysql集成

    千次阅读 2016-12-02 10:53:03
    PHP+apache+mysql集成
  • 今天配置好PHP以后,导入以前做的工程,发现页面遇到错误,无法显示。 错误如下: 一、修改php.ini文件。...打开E:\php\soft\PHP\php.ini, ...二、修改Apache的httpd.conf文件 打开E
  • Mac上配置Apachephp

    千次阅读 2019-07-01 21:47:30
    在Mac环境下系统本身就带有的Apache(阿帕奇服务器)和PHP都预装好了. 下面我们逐步来操作ApachePHP的合并: 第一步: (可省略,只是了解下mac带上有apache):: 用于查看系统预装的阿帕奇和PHP版本: (1)打开...
  • 本人因为之前安装了Apache服务,现在由于开发了PHP的系统,需要部署在该机器上运行,所以就采用Apache来进行解析,如何安装Apache服务器可以参考本人的另外一篇博客(点击链接访问)。原声的Apache服务是不安装PHP的...
  • apache2.2 安装php5

    千次阅读 2012-02-01 22:53:13
    安装apache2.2很容易,但安装php5的zip版时,老是有错,试了两个小时才成功,记录一下。 首先,php的版本用的是:php-5.3.1-Win32-VC6-x86.zip 1.PHP安装 使用绿色方式,下载Zip文件解压。 2.配置 在解压的...
  • Linux安装php-7.0.16,完成phpapache的配置
  • 如何让Apache能自动运行index.php

    千次阅读 2012-04-11 22:18:14
    最近调试PHP程序,总是输入index.php,输入的厌烦了,就想不用输入了,直接访问网站。 编辑httpd.conf文件,找到directoryindex在后面加一个index.php。 例如,我把directoryindex这行改为:directoryindex index....
  • Apache之——整合PHP

    千次阅读 2015-09-04 14:20:06
    Apache整合PHP的操作很简单,只需要修改相应的配置文件即可,下面我们就一起来整合吧。 1、准备 首先到http://www.apache.org下载apache服务器,到http://www.php.net/下载php 下载完成后安装apache(这里就不介绍...
1 2 3 4 5 ... 20
收藏数 294,135
精华内容 117,654
关键字:

php 不用apache