详解PHP5.6.30与Apache2.4.x配置

 更新时间:2017年7月6日 23:34  点击:1528
这篇文章主要介绍了详解PHP5.6.30与Apache2.4.x配置,很有参考价值哦,分享给大家,一起来看一看吧。

首先在Apache官网下载https://www.apachelounge.com/download/

这里写图片描述
请确保你的电脑安装有了

这里写图片描述 

若没有安装 请点击 vc_redist_x64/86.exe文件

这里写图片描述
下载好了 将其解压到自己想要文件夹中
这里写图片描述 

打开conf/httpd.conf文件

这里写图片描述 

这是端口 可根据自己需要进行修改

这是Apache服务访问PHP文件的目录

这里写图片描述 

还有cgi-bin的位置

这里写图片描述 

支持多个默认页

这里写图片描述 

将Apache服务安装到Windows服务中 以管理员身份运行cmd

这里写图片描述

httpd -k install -n "apache24"

如需卸载服务

httpd -k uninstall -n "apache24"

然后启动Apache服务

这里写图片描述 

浏览器输入 localhost 回车

这里写图片描述

接下来是配置PHP环境

从官网下载PHP http://windows.php.net/download#php-5.6

这里写图片描述 

下载后将其解压到自己想要的目录 复制份php.ini-development,并改名为PHP.ini

这里写图片描述 

打开Apache24\conf下httpd.conf 添加如下内容

# php5 support

LoadModule php5_module "F:/devloper/php-5.6.30/php5apache2_4.dll"

AddHandler application/x-httpd-php .php

# configure the path to php.ini

PHPIniDir "F:/devloper/php-5.6.30"

这里写图片描述

测试下 在Apache/htdocs目录下新建一文件 index.php 内容如下

打开浏览器访问 localhost/index.php

这里写图片描述

thinkPHP为什么显示不出验证码呢?下面这篇文章我们就来为大家分享了解决方法,有需要的朋友可以参考一下。

本文实例讲述了thinkPHP显示不出验证码的原因与解决方法。分享给大家供大家参考,具体如下:

今天到公司,svn update代码后,在浏览器上输入域名后,在验证码那块显示不出,找了半个上午,后来仔细看了下apache的配置文件

 

 代码如下复制代码

    ServerName admin.exam.com

    DocumentRoot E:/www/exam/trunk/server/Admin/

    <DirectoryE:/www/exam/trunk/server/apps/Admin/>

        Options FollowSymLinks

        AllowOverride all

        Order deny,allow

        allow from all

        Satisfy all

    

 

原来是DocumentRoot和Directory不一致

 

 代码如下复制代码

    ServerName admin.exam.com

    DocumentRoot E:/www/exam/trunk/server/Admin/

    

        Options FollowSymLinks

        AllowOverride all

        Order deny,allow

        allow from all

        Satisfy all

    

 

应该是再添加后台的时候,配置文件时复制里一个模块的,粗心了。

另外:

今天一同事又遇到类似的问题,我以为用上面的方法就可以解决呢,可是试了下不行,本着求真务实的态度我就去瞅了下生成验证码的源文件,终于发现了,原来是那个crystal.ttf字体文件不显示,难怪就只显示一条线,把字体文件移到源文件所在的目录就ok了。

这篇文章主要介绍了php分页查询mysql结果的base64处理方法,涉及php+mysql数据库查询及base64编码转换相关操作技巧,需要的朋友可以参考下

本文实例讲述了php分页查询mysql结果的base64处理方法。分享给大家供大家参考,具体如下:

 

 代码如下复制代码

publicfunctionpublic_about(){

   $sql="SELECTc.catid,c.catname,c.catdir,FROM_BASE64(p.content) FROM v9_page p JOINv9_category c ON c.catid=p.catid WHERE c.parentdir = 'jmwm/'";

   if(isset($_REQUEST['biaoshi'])){

     $sql="SELECTc.catid,c.catname,c.catdir,p.content FROM v9_page p JOIN v9_category c ONc.catid=p.catid WHERE c.catdir LIKE '{$_REQUEST['biaoshi']}%'";

   }

   $mydb= pc_base::load_model('mymodel');

   $mpages=$mydb->query_listinfo($sql);

   $this->array_to_base64($mpages);

  // $article['content']=base64_encode(toUtf8($article['content']));

   $msg=array();

   $msg['returncode']="0";

   $msg['msg']= togbk("关于联系");

   $msg['comment']=$mpages;

   echojsonFormat($msg);

// return_Msg(0,"关于联系",$mpages);

}

publicfunctionarray_to_base64(&$array){

  foreach($arrayas$key=>$value) {

    if(is_array($value)) {

      $this->array_to_base64($array[$key]);

    }elseif($key=="content"){

      $array[$key]=base64_encode(toUtf8($value));

    }else{

      $array[$key]=togbk($value);

    }

  }

}

 

下面小编就为大家带来一篇PHP面向对象的解释器模式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近在看 “深入PHP面向对象模式与实践” ,学习书中的内容后瞬间觉得自己有点高大上了,哈 ! 其实还是个菜。相信也会有新手朋友在看这本(我自己也是新手),对书中我个人认为比较难的内容的学习心得就想拿出来分享和交流,1是希望对自己所学知识能够起到巩固和加深理解的作用 2是希望对看到本文且感兴趣的新手朋友一些帮助。

这部分内容看了好几遍了代码也跟着敲了几遍,估计本文想要实现的功能大概就是用户在web页面上输入一些内容,然后通过后台程序解析后进行回复(感觉就是在废话)。例如我在前台web页面输入框里输入:

$input="4";

$inputequals"4"or$inputequals"four";

然后提交,系统就会回复类似 “条件成立” 或者 “条件不成立”的结果(有点类似直接在前台写代码并运行,后台解析后会返回一个结果。原书中虽然没有讲解整个前台输入到后台解析的过程但我猜这个后台解析应该还有一个使用正则表达式提取类似上面2行代码中关键字的过程)

上面这二行代码虽然是作者发明的语言,但根据字面含义也不难理解,第一行是定义一个变量并赋值,第二行是对变量进行一个判断(变量等于4或者等于four)。

废话不多说来看看这个模式定义的这几个类 (类图请自行看原文):

一、interpreterContext 这个类就像一个容器主要是用来存放和获取需要进行比较的值和比较的结果的,例如上述代码中的4, four,和比较结果 “true”或“false”,保存的形式是数组即类的属性$expressionstore,代码如下:

classInterpreterContext{

  private$expressionstore=array();//存放比较的值和结果

    

  functionreplace(Expression$exp,$value){    // 设置值

    $this->expressionstore[$exp->getKey()] =$value;

  }

    

  functionlookup(Expression$exp){        //获取值

    return$this->expressionstore[$exp->getKey()];

  }

}

这个类就像一个工具,供其他类来使用(它和其他类不存在继承、组合或聚合的关系)。

二、Expression 这是一个表达式的抽象类,定义了抽象方法interpret() 和方法getKey()

代码如下:

abstractclassExpression {

  privatestatic$keycount= 0;  //计数用的

  private$key;          //存放一个唯一值

  

  

  //主要实现将前台获取到的数据存放到上述InterpreterContext类中的功能,看到下面的内容就会发现继承他的类调用了InterpreterContext类的replace()方法

  abstractfunctioninterpret (InterpreterContext$context); 

  

 //获取一个唯一值  

  functiongetKey(){       

    if(!isset($this->key)){

      self::$keycount++;

      $this->key= self::$keycount;

    }

    return$this->key;

  }

}

下面将要讲到的类都将继承这个类,并且他和OperatorExpression(操作符表达式抽象类)是一个组合的关系,也就是说OperatorExpression在初始化时可以包含所有继承了Expression的子类(这也是本书一直在强调的要面向接口编程,这个Expression就是个接口,利用这个接口可以实现多态,不知道自己装B说的对不对,哈! 具体可以在看看原书的类图)

三、LiteralExpression 文字表达式类,作用就是将一个字符串保存到InterpreterContext这个小容器里,保存成一个索引数组,例如保存开头那二句自创代码中的 4 或者 four

代码如下:

classLiteralExpressionextendsExpression{

  private$value;  

  function__construct ($value){      //初始化时传入要保存的值

    $this->value=$value;

  }

  functioninterpret(InterpreterContext$context){    //调用InterpreterContext类的replace()将$value保存到InterpreterContext这个小容器里

    $context->replace($this,$this->value);

  }

}

四、VariableExpression 变量表达式类,和上面类的作用是一样的只不过数据将被保存成关联数组,关联数组中的健是变量名,值呢就是变量的值,例如开头二句中的变量"input" 和值 "4",

代码如下:

classVariableExpressionextendsExpression{

  private$name;    //变量名

  private$val;      //变量值

    

  function__construct ($name,$val=null){

    $this->name =$name;

    $this->val =$val;

  }

    

  functioninterpret(InterpreterContext$context){

    if(!is_null($this->val)){

      $context->replace($this,$this->val);

      $this->val = null;

    }

  }

    

  functionsetValue($value){  //用于设置变量的值

    $this->val =$value;

  }

    

  functiongetKey(){    //这个复写了父类的getKey()方法,在小容器InterpreterContext的lookup()方法调用这个类的实例的getKey()方法时 它将返回一个字符串(即变量名)而不是数字索引

    return$this->name;

  }

}

五、OperatorExpression 操作符表达式抽象基类,此类继承且组合了Expression抽象基类,实现的interpret()方法主要保存表达式的计算结果

代码如下:

abstractclassOperatorExpressionextendsExpression{

protected$l_op;  //表达式左边的值

protected$r_op;  //表达式右边的值

  

function__construct (Expression$l_op,Expression$r_op){    //初始化时可组合继承了Expression类的子类实例

$this->l_op =$l_op;

$this->r_op =$r_op;

}

  

functioninterpret(InterpreterContext$context){ //主要用于保存表达试的结果(保存到InterpreterContext 类的实例中)

$this->l_op->interpret($context);        //将Expression子类实例的值或计算结果保存到InterpreterContext 类的实例中

$this->r_op->interpret($context);

$result_l=$context->lookup($this->l_op);    //获取上一步的值或计算结果

$result_r=$context->lookup($this->r_op);

$this->doInterpret($context,$result_l,$result_r);  //具体的比较运算由继承的子类来实现

}

  

protectedabstractfunctiondoInterpret(InterpreterContext$context,$result_l,$result_r);

  

}

六、EqualsExpression、BooleanOrExpression、BooleanAndExpression,分别为继承了OperatorExpression 抽象基类的相等表达式、或表达式、与表达式只有一个方法doInterpret()内部调用了InterpreterContext类的replace()方法将表达式的计算结果保存到InterpreterContext类的实例中

代码如下:

//相等表达式

classEqualsExpressionextendsOperatorExpression {

protectedfunctiondoInterpret(InterpreterContext$context,$result_l,$result_r){

$context->replace($this,$result_l==$result_r);

}

}

  

//或表达式

classBooleanOrExpressionextendsOperatorExpression{

protectedfunctiondoInterpret(InterpreterContext$context,$result_l,$result_r){

$context->replace($this,$result_l||$result_r);

}

}

  

  

//与表达式

classBooleanAndExpressionextendsOperatorExpression{

protectedfunctiondoInterpret(InterpreterContext$context,$result_l,$result_r){

$context->replace($this,$result_l&&$result_r);

}

}

到此为止此模式相关的类就介绍完毕,上述代码都是进过测试的,可直接复制粘贴运行来查看结果,现在我们就来看看客户端代码:

客户端代码一:

$context=newInterpreterContext();

  

$statement=newBooleanOrExpression (  //可尝试将此操作符表达式换成BooleanAndExpression 运行一下 看看执行结果

  

//可尝试将LiteralExpression中实例化的参数改成其他值看看运算结果,或者直接将EqualsExpression对象换成BooleanOrExpression 或BooleanAndExpression 

newEqualsExpression(newLiteralExpression('four'),newLiteralExpression('four')), 

  

newEqualsExpression(newLiteralExpression('b'),newLiteralExpression(Ɗ'))

);

  

$statement->interpret($context);

if($context->lookup($statement)){

echo'条件成立'

}else{

echo'条件不成立'

}

客户端代码二:

$context=newInterpreterContext();

  

$statement=newBooleanOrExpression(

newBooleanAndExpression(

newEqualsExpression(newLiteralExpression(Ɗ'),newLiteralExpression(Ɗ')),

newEqualsExpression(newLiteralExpression(Ɗ'),newLiteralExpression(Ɗ'))

),

newEqualsExpression(newLiteralExpression('b'),newLiteralExpression(Ɗ'))

);

  

$statement->interpret($context);

if($context->lookup($statement)){

echo'条件成立'

}else{

echo'条件不成立'

}

客户端代码三:

这是原文的客户端代码实例和上述客户端代码的区别在于使用了变量表达式VariableExpression

$context=newInterpreterContext();    

$input=newVariableExpression('input');  //这里定义了一个变量input 但并未赋值

  

$statement=newBooleanOrExpression(

newEqualsExpression($input,newLiteralExpression('four')),  //这里变量表达式和文字表达式的值将进行一个是否相等的比较

newEqualsExpression($input,newLiteralExpression(Ɗ'))

);

  

foreach(array("four","4","52")as$val){

$input->setValue($val);        //对input这个变量赋值

print"变量input的值为:$val:
";

$statement->interpret($context);  //进行比较并将比较结果存入InterpreterContext对象实例

if($context->lookup($statement)){  //获取比较的结果

print"条件成立
";

}else{

print"条件不成立
";

}

}

上述代码经过测试都可以正常运行,有需要的朋友可以复制下来,运行一下看看结果。

以上这篇PHP面向对象的解释器模式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本网站。

[!--infotagslink--]

相关文章

  • Apache启动报错No space left on device: AH00023该怎么解决

    Apache启动报错No space left on device: AH00023错误可能是进程导致了,虽然小编不知道什么原因但网上提供的解决办法确实是可以解决我们的问题,下面来看看。对于这类错误是因为linux系统的ipc信号量造成的,apache启动时...2015-10-21
  • apache配置黑名单和白名单及账户权限控制

    本文我们将分享apache配置黑名单和白名单,apache层的账户权限控制,以及apache黑名单白名单过滤功能,apache rewrite规则实现白名单。 apache配置黑名单和白名单的两...2016-09-14
  • apache开启gzip详解教程

    今天在用百度工具检测时发,发现有个提示如下 原来可以开启gzip啊,因为我的是apache所以和iis不同,经过网站搜索开启方法如下 一,找到你的httpd.conf文件,打开找到如下 ...2016-01-28
  • 解决PHPstudy Apache无法启动的问题【亲测有效】

    这篇文章主要介绍了PHPstudy Apache无法启动的问题及解决方法【亲测有效】,本文给大家总结了三种方法供大家参考,需要的朋友可以参考下...2020-10-30
  • apache http server遇到了一个问题,需要关闭

    重装系统后,重新安装了xamp,最近启动的时候经常报apache http server遇到了一个问题,需要关闭,显示如图: 解决方法:查看szModName报错的模块,然后把PHP安装目录下对应的模块...2016-01-28
  • nginx+apache+mysql+php+memcached+squid搭建集群web环境

    当前,LAMP开发模式是WEB开发的首选,如何搭建一个高效、可靠、稳定的WEB服务器一直是个热门主题,本文就是这个主题的一次尝试。...2016-01-27
  • Windows Server 2016 上配置 APACHE+SSL+PHP+perl的教程详解

    Windows Server 2016 上配置 APACHE+SSL+PHP+perl怎么配置?小编推荐了一篇介绍Windows Server 2016 上配置 APACHE+SSL+PHP+perl的教程,有需要的同学快来看看吧! ...2017-07-06
  • 隐藏Nginx或Apache以及PHP的版本号的方法

    这篇文章主要介绍了隐藏Nginx或Apache以及PHP的版本号的方法,主要用来防止针对性的漏洞攻击,需要的朋友可以参考下...2016-01-05
  • apache下设置缓存方法详细介绍

    默认情况下,apache安装完以后,是不允许被cache的。如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_c...2016-01-28
  • Apache Reference Manual (10)

    Satisfy directive Syntax: Satisfy 'any' or 'all' Default: Satisfy all Context: directory, .htaccess Status: core Compatibility: Satisfy is only available...2016-11-25
  • apache中Order Allow Deny详解

    Order A, B (其中,A和B均可以代表allow或者deny,以下conlist表示控制列表) A from conlist1 B from conlist2 那么最终访问控制的结果为:(以(A)表示A的控制范围,) (A)= (conli...2016-01-28
  • 简单介绍apache的rewirte配置教程

    任何二级域名,均跳转到www下。 本地测试站点:www.111cn.net,下面是apache里的配置: 代码如下 复制代码 <VirtualHost *> <Directory "D:/webroot/myp...2016-01-28
  • Mysql+Apache2+php5 安装

    下载下列文件至/usr/local/src/ apache(Unix平台最流行的WEB服务器平台)2.tar.gz MySQL(和PHP搭配之最佳组合)-5.0.22.tar.gz php(做为现在的主流开发语言)-5.1.2...2016-11-25
  • 以动态模块的方式安装apache2.0.44+PHP4.3.0

    经过一天的努力,终于装完了apache2.0.44+PHP4.3.0呵呵, 不禁佩服自己的愚蠢 :( 以前安装都是用php静态模块的方式,似乎在apache2以上的版本上行不通(猜测而已:)) 安装过程简...2016-11-25
  • Apache Reference Manual (2)

    AuthName directive Syntax: AuthName auth-domain Context: directory, .htaccess Override: AuthConfig Status: core This directive sets the name of the author...2016-11-25
  • 系统找不到指定的文件 No installed service named "Apache2"

    我们有时会发现apache会出现,系统找不到指定的文件 No installed service named "Apache2" 安装Apache问题:系统找不到指定的文件 No installed service named "Apa...2016-09-14
  • IIS&Apache 攻击记录分析篇

    每个网管最黑暗的时候莫过于服务器被攻击后的束手无策,其实服务器遭受攻击后,服务器的记录文件详细地记录了黑客活动的蛛丝马迹。...2016-01-27
  • apache中如何实现301转向

    编辑.htaccess的方法。 注意:在设置301重定向之前务必备份相应目录下的.htaccess文件。 1.重定向111cn.net到www.111cn.net 这种重定向旨在使域名唯一,是网站seo教程必...2016-01-28
  • ThinkPhP+Apache+PHPstorm整合框架流程图解

    这篇文章主要介绍了ThinkPhP+Apache+PHPstorm整合框架流程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-23
  • 在apache下限制每个虚拟主机的并发数

    下载模块: http://www.nowhere-land.org/prog ... st_limit-0.4.tar.gz 官方网址: http://www.nowhere-land.org/programs/mod_vhost_limit/ 安装: apxs -c mod_vhost_...2016-01-28