本文涉及的安装包下载地址,在文章最后附上.
1.在Window下搭建
(apache(iis)+ php + mysql+phpmyadmin) => wamp
2.在Linux
linux +apache+mysql+php =>lamp
我们先看看如何在Windows安装
① 套件软件
appserv 是一个泰国人,该软件把我们需要环境软件打包安装
(apache+mysql(数据库)+php(php开发)+phpmyadmin[这个管理mysql的一个节目操作软件.])
演示如下:
1.准备软件 appserv ,你可以网上下载
2.安装(基本是傻瓜式安装)
安装可以选择安装哪些组件
测试一下我们的套件是否安装ok
在apache的默认路径下,开发一个 hello.html 和 hello.php文件,看看是否能够正常访问.
同时我们可以来管理mysql数据库,到此我们可以确认四大软件安装ok
② 自定义安装
apache+php+mysql+phpmyadmin 自行安装
我们建议大家,安装的时候安装到同一文件夹,利用管理(文件夹不要中文)
安装完一个测试一个.
1. apache
完后 http://locahost
2. 下 php 核心包(用于支持php开发 )
php 核心包的安装就是解压即将
ps:
(1)VC6和VC9的区别?
VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的。
VC9就是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。
(2)那我们如何选择下载哪个版本的PHP呢?
如果你是在windows下使用Apache+PHP的,请选择VC6版本;
如果你是在windows下使用IIS+PHP的,请选择VC9版本;
(3)那Non Thread Safe和Thread Safe是什么?
Non Thread Safe就是非线程安全;
Thread Safe 是线程安全;
官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用
3. 如何将apache 和php 整合
也即是说,怎样才能让apache处理php
①在apache 的conf目录下 的 httpd.conf加入如下代码:
LoadModule php5_module ~php安装路径/php5apache2_2.dll
PHPIniDir “~php模块安装路径”
AddType application/x-httpd-php .php .phtml
说明,我们只要包红色的部分,改成实际php 安装的路径即可
②把 php.ini-development 文件 改成 php.ini 为什么改,因为我们的php的设置有需要在php.ini修改
③在php.ini中可以指定对应的功能模块
;这里我们要指定php的扩展库路径
; On windows:
extension_dir = “C:/myenv/php-5.3.5/ext”
测试看看apache和php是否整合成功
写这样一段代码
<?php
phpinfo();
?>
重新启动 http://localhost/test.php
安装数据库mysql ,这里我们只安装不讲解
1. 准备软件
测试mysql是否可以用
1. 写一段php 代码来测试是否成功!
//目前你看不懂,没关系
<?php
$conn=mysql_connect(“localhost”,”root”,”root”);
if($conn){
echo “连接mysql数据库ok”;
}else{
echo “连接数据库失败”;
}
?>
当我们没有对php进行正确配置的时候,会报
Fatal error: Call to undefined function mysql_connect() in C:\myenv\apache\htdocs\temp.php on line 3
原因: 目前没有启用mysql功能,在php.ini中
extension=php_mysql.dll
extension=php_mysqli.dll
2. 安装一个phpmyadmin(该网站实际可以更好的管理mysql)来看看是否可以使用
把该压缩包直接解压到htdocs目录, 然后可以直接访问
http://localhost/phpMyAdmin/index.php 即可.
到此我们学会 用套餐软件 appserv 来安装,以及使用自定义的方式来搭建自己的php开发环境.
现在,我们来在自己搭建的php开发/运行环境上 安装一个discuz论坛.
① 准备一个discuz论坛代码
② 将其解压到 htdocs 目录下
③ 把discuz的upload文件拷贝到 discuz文件夹下 ,然后删除upload文件夹
④ 修改config.inc.php
// [CH] 以下变量请根据空间商提供的账号参数修改,如有疑问,请联系服务器提供商
$dbhost = ‘localhost’; // 数据库服务器
$dbuser = ‘root’; // 数据库用户名
$dbpw = ‘root’; // 数据库密码
$dbname = ‘discuz’; // 数据库名
$pconnect = 0; // 数据库持久连接 0=关闭, 1=打开
// [CH] 论坛安全设置, 调整以下设置,可以增强论坛的安全性能和防御性能
$adminemail = ‘admin@your.com’; // 系统管理员 Email
$forumfounders = ‘admin’;
⑤ http://localhost/discuz
如果提示 对不起,请将 php.ini 中的 short_open_tag 设置为 On,否则无法继续安装论坛。则修改
大家可以自己试试搭建php环境并配置好discuz 论坛.
在Microsoft Windows中使用Apache HTTP服务器说明
套件软件
(1)appserv:http://www.appservnetwork.com/
(2)XAMPP:http://www.apachefriends.org/index.html
(3)WampServer:http://www.wampserver.com/
(4)BitNami WAMP Stack:http://bitnami.com/stack/wamp
自定义安装
(1)Apache官方
http://httpd.apache.org/download.cgi
(2)ApacheHaus
http://www.apachehaus.com/cgi-bin/download.plx
(3)Apache Lounge
http://www.apachelounge.com/download/
(4)php
http://windows.php.net/download/
(5)mysql
http://dev.mysql.com/downloads/
(6)phpmyadmin
http://www.phpmyadmin.net/home_page/index.php
本文链接:http://www.cnblogs.com/yezhongqi/p/php-development-environment-integration-and-custom-installation.html,转载请注明。
1.概述
装饰者模式,英文名叫做Decorator Pattern。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
2.特点
/// 定义Component对象接口
/// </summary>
public abstract class Component
{
public abstract void Operation();//一个抽象的职责
}
/// <summary>
/// 具体对象
/// </summary>
class ConcreteComponent : Component
{
public override void Operation()
{
Console.WriteLine("具体对象的操作");
}
}
//装饰者抽象类
abstract class Decorator : Component
{
protected Component component;
public void SetComponent(Component component)
{
this.component = component;
}
public override void Operation()
{
if (component != null)
{
component.Operation();
}
}
}
class ConcreteDecoratorA : Decorator
{
public override void Operation()
{
base.Operation(); //首先运行原Compnent的Operation(),再执行本类的功能,如AddedBehavior,相当于对原Component进行了装饰
Console.WriteLine("具体装饰对象A的操作");
}
}
class ConcreteDecoratorB : Decorator
{
public override void Operation()
{
base.Operation(); //首先运行原Compnent的Operation(),再执行本类的功能,如AddedBehavior,相当于对原Component进行了装饰
Console.WriteLine("具体装饰对象B的操作");
}
}
(2)无抽象接口
{
public virtual void Description()
{
Console.Write("基本");
}
}
public class ESPDecorator : Car
{
Car car;
阅读更多内容
没有评论:
发表评论