Win7+Apache2.4.3+phpMyAdmin3.5.2.2+ZF2.0.0

PHP5.4.6配置教程

(Win7+Apache2.4.3+phpMyAdmin3.5.2.2+ZF2.0.0)

By 霡霂(盟军特战队)

我的微博:

http://t.qq.com/maimuf 

http://weibo.com/maimuf(你懂的,点击收听。)

解释:原来的那一份被我删除了,这一份是我略微修改的版本。

删除的原因:由于使用百度的文档更新功能后,文档管理混乱,被我误删了,无论如何都无法恢复数据,只能重新上传。对于百度文库的开发团队真是失望,本人推荐使用新浪爱问和新浪微盘。

系统环境:Windows 7

PHP版本:PHP5.4.6(推荐而已)

Apache2.4.3(with openssl 1.0.1c,Zip包安装)

MySQL(GA)5.5.7

phpMyAdmin3.5.2.2

Zend Framework2.0.0(新版本,新特性,新用法)

Zend Studio 9.0.X

为不同的项目配置不同的虚拟主机,为phpMyAdmin配置虚拟主机

PS:

另附

Zend Server便捷开发配置(预告)

Zend Studio9.0.X相关内容。

PHP中文配置教程,新颖、前卫,进取,与时俱进。

声明:

1、本文所有软件安装配置均由本人,亲自,多次测试。力求做到版本兼容。

2、本教程的创作区别于现有国产PHP书籍和教材写作时,在老版本书籍中盲目东摘西抄,不知对错和所以然的不负责任的恶心行为。

3、教程中所有配置命令,均来自于Apache手册、Zend Server(CE)自动配置文件、或Fedora 17下PHP环境配置。但是经过测试,绝对为Windows 7开发环境定制。

4、本教程版权所有,严禁任何人以任何形式进行摘抄和用于商业出版。违者必追究法律责任。欢迎出版社洽谈,出版书籍事宜。

5、任何网络转载,请注明出处。违者追究责任。

6、本文,仅在百度文库、百度Fedora吧、以及新浪共享同步更新,敬请期待。

7、阅读时,请认真仔细,切忌心焦气躁。

8、本文请勿用于生产环境,任何未经过专门优化的运行环境都是危险的。

一.配置安装

1.软件相关信息列表和说明

Apache 2.4.3 httpd-2.4.3-win32.zip

PHP5.4.6php-5.4.6-Win32-VC9-x86.zip

ApachePHP扩展模块:php5apache2_4.dll-php-5.4-win32.zip(该文件只支持到PHP5.4.6,而最新的PHP5.4.7及以上还有待更新。)

MySQLGA5.5.7mysql-5.5.27-win32.msi

phpMyAdmin3.5.2.2:phpMyAdmin-3.5.2.2-all-languages.7z

Zend Framework2.0.0:ZendFramework-2.0.0.zip

Zend Studio 9.0.3:ZendStudio-9.0.3.msi

2.软件下载地址

以下链接都是最新版本的页面地址,当你打开时最新的版本可能已经更新了。您可以根据第二章的软件知识必知,有目的的下载最新的版本。

如果觉得会造成不必要的困扰,我也准备好了

迅雷快传的下载地址(如果你信得过我的话)

http://kuai.xunlei.com/d/RUIZPMTOFAHO

官方地址

httpd-2.4.3-win32.zip: 

http://www.apachelounge.com/download/

php-5.4.6-Win32-VC9-x86.zip:

  http://cn2.php.net/releases/

  http://museum.php.net/

  http://windows.php.net/downloads/releases/archives/

php5apache2_4.dll-php-5.4-win32.zip:

http://www.apachelounge.com/download/

mysql-5.5.27-win32.msi:

  http://www.mysql.com/downloads/

  http://dev.mysql.com/

phpMyAdmin-3.5.2.2-all-languages.7z:

  http://www.phpmyadmin.net/home_page/downloads.php

ZendFramework-2.0.0.zip:

  http://framework.zend.com/downloads/latest

ZendStudio-9.0.3.msi

http://downloads.zend.com/studio-eclipse/9.0.3/ZendStudio-9.0.3.msi

3.Zend Studio9.0.x安装和简单配置

ZS的安装比较简单,请在安装时将安装路径改为D盘,其余默认即可。动不动就默认安装到C盘的孩子,傻的可爱。安装后破解,请百度。

此时,ZS的工作空间应该为C:\Users\maimu(我的用户名)\Zend\workspaces\DefaultWorkspace .请不要急于修改成别的路径,等下霡霂教你通过配置apache虚拟机而在默认工作空间开发PHP。你只需要一步步按我说的来,不要急于按你的想法修改,等你掌握了我的方法,你就可以随心所欲的修改了。

下图中,可以看出,在我的工作空间下,有两个项目在开发,而两个项目使用的是不同的配置。 

4.解压phpMyAdmin-3.5.2.2和Zend Framework2.0.0

由于后面章节需要在apache和PHP的配置文件中指定phpMyAdmin和Zend Framework的的安装路径和部分配置选项,因此,先安装好这两个软件。由于是简单的压缩包,直接解压后放置到相关路径中:

D:\Program Files\phpMyAdmin-3.5.2.2

如何开启phpMyAdmin的高级功能和选项,期待下文。

D:\Program Files\ZendFramework\ZendFramework-2.0.0

在ZendFramework的文件夹下放置不同版本的Zend Framework.

5.apache的安装和启动

windows下启动apacheLinux平台没有什么大的区别:命令启动和以系统服务启动。前提是你的配置文件的配置正确无误,所以请阅读完具体配置后再运行本节的命令。

①在DProgram Files文件夹下新建apachelounge文件夹用来存放apachelounge下载的不同版本的apache,如apache22apache24.

httpd-2.4.3-win32.zip解压后,放到apachelounge,如图。找到apache24文件夹下的conf文件夹,它的路径应该是D:\Program Files\apachelounge\Apache24\conf 。

③启动apache或者安装为系统服务

以霡霂的环境为例,以下为具体的命令

如果配置文件没有什么错误和引起警告的地方,那么是没有什么输出的。觉得输入长串的路径很麻烦,可以将apache的可执行程序的文件夹bin加入到系统path中,以供系统搜索。但是,如果你的系统中安装了两个及以上个apache服务器的话,那么只将经常用的那个的路径加入到path中就好。因为,系统在path中搜索httpd命令的存放路径时,将会使用path中最靠前的那个。

Httpd.exe(httpd)只是启动apache程序的命令,将apache安装为 系统服务,需要使用下面的命令

httpd.exe –k install –n “ServiceName”

ServiceName是你要安装的apache服务的名称。

这条命令需要以管理员身份运行命令提示符。

安装成功后有提示信息。

使用下面的命令卸载你安装的apache服务:

httpd.exe -k uninstall -n "MyServiceName"

6.apache2.4.3配置

(注意文件路径问题,为了避免不必要的麻烦,最好是按照霡霂的安装路径来,因为我的安排还是比较科学的。)

①使用记事本打开httpd.conf,这是apache启动时读取的配置文件。

②下面开始配置。为了便于查找,从上到下一次的顺序依次配置。

查找ServerRoot "c:/Apache24" ,修改为:

ServerRoot "D:\Program Files\apachelounge\Apache24" 。

这是apache web服务器的根目录,也就是apache配置文件夹(conf)所在目录,Linux上为 /etc/httpd,在Linux/etc 目录是所有配置文件的总目录,而/etc/httpd是apache的配置文件目录。

查找以下模块(Module),一次去掉前面的#号:(最好不要多,也不要少,如果对于2.4的模块比较了解,可以自己增减。每个模块的具体作用,自己查看apache的文档。)

LoadModule cache_module modules/mod_cache.so

LoadModule filter_module modules/mod_filter.so

LoadModule headers_module modules/mod_headers.so

LoadModule imagemap_module modules/mod_imagemap.so

LoadModule info_module modules/mod_info.so

LoadModule mime_magic_module modules/mod_mime_magic.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule session_module modules/mod_session.so

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

LoadModule socache_dbm_module modules/mod_socache_dbm.so

LoadModule socache_memcache_module modules/mod_socache_memcache.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

LoadModule ssl_module modules/mod_ssl.so(虽然开启的SSl支持模块,但是下文并没有做出相关的配置。SSl功能是无法使用的。

LoadModule status_module modules/mod_status.so

LoadModule userdir_module modules/mod_userdir.so

LoadModule version_module modules/mod_version.so

LoadModule vhost_alias_module modules/mod_vhost_alias.so

LoadModule watchdog_module modules/mod_watchdog.so

不要漏下了。

查找到  #ServerName www.example.com:80  修改为

ServerName localhost

查找

<Directory />

    AllowOverride none

    Require all denied

</Directory>

修改为:

<Directory />

    Options FollowSymLinks

    AllowOverride none

    #Require all denied

    Order deny,allow

    Deny from all

</Directory>

这段容器配置指令是为了设置Apache 服务器根(ServerRoot)的访问权限:Options FollowSymLinks表示允许允许符号链接跟随,访问不在本目录下的连接文件;AllowOverride none表示禁止读取.htaccess 配置文件中的配置来覆盖该容器中的配置,也就是说,禁止其他用户对于ServerRoot文件夹访问权限的更改;Order deny,allow和Deny from all表示先拒绝(deny)所有访问,再允许allow定义的IP或者用户的访问(如果你定义了的话。)

关于Order,deny,allow三者如何定义访问权限的详细内容,请查看apache手册。

查找 DocumentRoot "c:/Apache24/htdocs"  修改为:

DocumentRoot "D:\Program Files\apachelounge\Apache24/htdocs"

这个定义了网站(非虚拟机)的文档根目录,也就是一般用来存放脚本程序的目录。下文还要讲解使用虚拟主机和路径别名,将其他文件

查找 <Directory "c:/Apache24/htdocs">  修改为

<Directory "D:\Program Files\apachelounge\Apache24/htdocs">

该容器段是用来对网站文档根目录进行访问控制的。

还要继续修改

本容器段的最后的Require all granted行注释掉(行前加#号),并在下面添加:

    Order allow,deny

Allow from all

查找 DirectoryIndex index.html 修改为

DirectoryIndex index.php index.html  (注意空格问题)

查找 

<Files ".ht*">

    Require all denied

</Files>

全部注释掉,并在其下添加

<FilesMatch "^\.ht">

    Order allow,deny

    Deny from all

    Satisfy All

</FilesMatch>

这是控制以.ht 开头的配置文件的访问权限,主要是针对.htaccess文件。Satisfy配合allow指令使用,具体含义请查看手册。

查找 ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" 修改为

ScriptAlias /cgi-bin/ "D:\Program Files\apachelounge\Apache24/cgi-bin/"

查找 <Directory "c:/Apache24/cgi-bin"> 修改为

<Directory "D:\Program Files\apachelounge\Apache24/cgi-bin">

并将该容器段中的配置 Require all granted 注释掉,并在该行下添加:

    Order allow,deny

     Allow from all

虚拟主机配置

也许你在开发时不想使用默认的网站文档根目录,而是另有安排,比如,配合Zend Studio或者Eclipse的工作空间的目录等等,请认真阅读本教程,你会如愿以偿。 

apache的官方文档认为:如果你想在现有的web服务器上增加虚拟主机,你必须也为现存的主机(非虚拟主机,也就是默认的网站根目录代表的主机)建造一个<VirtualHost>定义块。这个虚拟主机中ServerNameDocumentRoot所包含的内容应该与全局的ServerNameDocumentRoot保持一致。还要把这个虚拟主机放在配置文件的最前面,来让它扮演默认主机的角色。这一步的配置的目的就是取消中心主机。

因此,在文档的最后位置,添加如下配置内容:

<VirtualHost *:80>

   DocumentRoot "D:\Program Files\apachelounge\Apache24/htdocs"

   SetEnv APPLICATION_ENV development

   <Directory "D:\Program Files\apachelounge\Apache24/htdocs">

       Options Indexes MultiViews FollowSymLinks

       AllowOverride All

       Order allow,deny

       Allow from all

   </Directory>

</VirtualHost>

由于开发者一般不会连接DNS服务器,随时查询IP和域名的映射,所以本文所有的虚拟主机都是基于IP的(计算机内网地址,127.0.0.1127.0.0.2……,*号表示监听所有内网IP。)

此时在浏览器地址栏输入http://localhost/就可以访问默认的虚拟主机了。

7.PHP5.4.6安装配置

在上一小节中的httpd.conf文件的最后,也就是默认虚拟主机后,添加如下配置:

Include "conf/myproject.conf"

Include "conf/php.conf"

①在D:\Program Files下新建php文件夹用来放置PHP的不同版本

php-5.4.6-Win32-VC9-x86.zip解压后放置到php文件夹下,最终路径应该为D:\Program Files\php\php-5.4.6-Win32-VC9-x86。

②php5apache2_4.dll-php-5.4-win32.zip解压后找到php5apache2_4.dll文件放到D:\Program Files\php\php-5.4.6-Win32-VC9-x86下

③找到php.ini-development文件复制后改名为php.ini。作为PHP的配置文件。

④在conf文件夹下新建文本文档,改名为myproject.conf(注意开启已知文件扩展名可见),该文件专门用来放置你开发的网站程序的配置。

conf文件夹下新建文本文档,改名为php.conf,该文件专门用于存放PHP相关的配置内容,如加载PHP扩展模块等。

这样做的目的是为了分工明确,当你升级apache的版本时,不会对php.confmyproject.conf造成影响,只需要在新的httpd文件末尾添加

Include "conf/myproject.conf"

Include "conf/php.conf"

即可。

⑤打开php.conf配置文件,添加以下配置

SSLSessionCache        "shmcb:D:\Program Files\apachelounge\Apache24\logs/ssl_scache(512000)"

<Location /server-info>

    SetHandler server-info

    Order deny,allow

    Deny from all

    Allow from 127.0.0.1

</Location>

<Location /server-status>

    SetHandler server-status

    Order deny,allow

    Deny from all

    Allow from 127.0.0.1

</Location> 

LoadModule php5_module "D:\Program Files\php\php-5.4.6-Win32-VC9-x86\php5apache2_4.dll"

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

PHPIniDir "D:\Program Files\php\php-5.4.6-Win32-VC9-x86"

<Location /phpMyAdmin>

  Order deny,allow

  Allow from all

</Location>

Alias /phpMyAdmin "D:\Program Files\phpMyAdmin-3.5.2.2"

其中

SSLSessionCache配置指令用来指出SSL SessionCache文件的位置(SSL配置选项)

<Location /server-info>和<Location /server-status>两个容器是为了配置服务器信息和服务器状态的访问控制。

LoadModule php5_module是加载apachePHP模块文件

PHPIniDir指令在apache的官方文档中并没有记载,但是却可以使用。它指明了PHP配置文件的配置文件的路径。

PHP的官方文档中,windows下的php搜索php.ini文件的搜索路径如下(按顺序):

· SAPI 模块所指定的位置(Apache 2 中的 PHPIniDir 指令,CGI 和 CLI 中的 -c 命令行选项,NSAPI 中的 php_ini 参数,THTTPD 中的 PHP_INI _PATH 环境变量) 

· HKEY_LOCAL_MACHINE\SOFTWARE\ PHP \IniFilePath(Windows 注册表位置) 

· PHPRC 环境变量 

· 当前工作目录(对于 CLI) 

· web 服务器目录(对于 SAPI 模块)或 PHP所在目录(Windows 下其它情况) 

· Windows 目录(C:\windows 或 C:\winnt),或 --with-config-file-path 编译时选项指定的位置 

具体如何使用方法请查看PHP官方文档。

<Location /phpMyAdmin>

  Order deny,allow

  Allow from all

</Location>

Alias /phpMyAdmin "D:\Program Files\phpMyAdmin-3.5.2.2"

是默认虚拟主机的phpMyAdmin的配置,再次注意路径问题

Alias指令使你不需要将phpMyAdmin的程序放置在默认虚拟主机指明的路径中,而是做了一个别名指向。

在后面的章节我们会介绍如何开启phpMyAdmin的高级功能。

php.ini文件的配置

打开上文提到的php.ini文件,在文件末尾添加下列命令:

其中,include_path指令用于添加Zend FrameworkVersion<2.0.0

include_path = ".;D:\Program Files\ZendFramework\ZendFramework-1.12.0\library"

realpath_cache_size=256k

extension_dir = "D:\Program Files\php\php-5.4.6-Win32-VC9-x86/ext"

extension=php_bz2.dll

extension=php_mbstring.dll

extension=php_mysql.dll

extension=php_mysqli.dll

extension=php_openssl.dll

extension=php_pdo_mysql.dll

extension=php_pdo_pgsql.dll

extension=php_pgsql.dll

extension=php_soap.dll

extension=php_sqlite3.dll

extension=php_xmlrpc.dll

extension=php_xsl.dll

extension=php_zip.dll

post_max_size=100M

upload_max_filesize=100M

date.timezone = Etc/GMT-8

session.save_handler = files

session.save_path = " D:\Program Files\php \tmp "

本文开启的php extension,都是比较常用的,而且经过测试,没有出现依赖的dll文件缺失的问题,如果读者需要开启其他的extension,可能会出现依赖dll文件缺失的错误。

这些配置指令读者可以在配置文件中查找,然后修改,也可以在文件末尾添加,这样便于管理。

8.安装MySQL,简单耐心

mysql-5.5.27-win32.msi是自解压缩安装文件,所以安装上比较简单。网上也能找到相关的教程,不再详细的描述。

安装路径推荐更改为D盘的Program Files,这样相关的路径如下:

①MySQL的安装路径为:D:\Program Files\MySQL\MySQL Server 5.5

②数据库文件夹为:D:\Program Files\MySQL\MySQL Server 5.5\data

InnoDB数据表空间存放文件夹选项选择默认的Installation Path(安装路径),也就是:D:\Program Files\MySQL\MySQL Server 5.5\data

数据库监听的端口为3306,出现端口冲突问题,请阅读后面的章节,可以解决。

9.使用Zend Studio9.0.X新建项目的配置

至此,PHP基本的开发环境搭建配置已经完成,至于phpMyAdmin的配置,请您稍安勿躁,片刻就好。

开始使用Zend Studio时需要指明当前的工作空间(Eclipse系的软件的特点,大概继承自Unix/Linuxsell的当前目录)

很多教程和书籍,教读者搭建开发环境时,要求将DocumentRoot的值更改为当前PHP程序所在的目录,以实现程序的读取和执行。这种做法固然简单,但是却是不合理的。使用这种做法只能说明图书的作者不懂apache的基本的配置规则和运行的原理。听霡霂慢慢道来。

一般apache都带有默认的中心主机,它放置网站程序的目录就是htdocs。我安装的apache2.4的中心的主机的配置如下

DocumentRoot "D:\Program Files\apachelounge\Apache24/htdocs"

ServerName localhost

<Directory "D:\Program Files\apachelounge\Apache24/htdocs">

……

……

</Directory>

但是默认的中心主机有几个弊端:

第一、在中心主机的文档根目录中放置不同的网站程序时,不便于分别对每个网站程序进行访问控制(不是不能,而是有些麻烦。)而且有很大的安全隐患。

第二、如果你准备开启一个监听 *80的虚拟主机时,如果该虚拟主机的DocumentRoot 指向别的目录(而非htdocs),那么htdocs下的程序将无法访问了。

第三、当你想安装一些别的程序的时候(如:phpMyAdmin),总不能老是把这些程序放在htdocs目录下吧。

所以,我们使用了默认的虚拟主机,并将其DocumentRoot指向中心的D:\Program Files\apachelounge\Apache24/htdocs 。关于取消中心主机的配置,前面已经详细的介绍了,不打算累述。

下面开始讲解新建项目的配置,使这些项目的运行基于默认的虚拟主机。

①在Zend Studio9中,新建一个名为myWeb的普通PHP项目(file->new->PHP Local Project,如果你没有更改工作空间的话,他的路径应该为类似于C:\Users\maimu\Zend\workspaces\DefaultWorkspace\myWeb

②打开上文中提到的myproject.conf文件,这个文件用来集中管理你不同项目的配置。

添加如下指令:

<Directory "C:/Users/maimu/Zend/workspaces/DefaultWorkspace/myWeb">

    Options Indexes MultiViews FollowSymLinks

    AllowOverride All

    Order allow,deny

    Allow from all

</Directory>

<Location /myWeb>

  Order deny,allow

  Allow from all

</Location>

Alias /myWeb "C:\Users\maimu\Zend\workspaces\DefaultWorkspace\myWeb"

Zend Framework项目配置。

新建ZF项目myBlog 

开发Zend Framework项目时,要求用户可以访问的目录为项目目录下的public目录,而且还需要开启虚拟主机的AllowOverride All指令。

请在myproject.conf文件下添加如下指令:

<Directory "C:/Users/maimu/Zend/workspaces/DefaultWorkspace/myBlog/public">

    Options Indexes MultiViews FollowSymLinks

    AllowOverride All

    Order allow,deny

    Allow from all

</Directory>

<Location /myBlog>

  Order deny,allow

  Allow from all

</Location>

Alias /myBlog "C:/Users/maimu/Zend/workspaces/DefaultWorkspace/myBlog/public"

由于我们配置了默认的虚拟主机,所以,对于这些程序的访问,都会转发到默认的虚拟主机上处理。因此我们在默认虚拟主机中开启的AllowOverride All指令对于myBlog程序同样有效。

这就是我们通过Alias指令和<Directory>、<Location>等容器指令,将虚拟主机中的程序放置在不同的文件夹。

10.可视化开启phpMyAdmin的功能配置和高级配置

这一节是重中之重,不同于以往的完全的更改配置文件的配置。

希望你已经仔细的阅读,并实践了前面的apache配置:

在php.conf中加入phpMyAdmin的支持,详见第7节的第⑤步。

此时如果已经安装了MySQL,并开启了服务,那么通过以下地址就可以访问phpMyAdmin了:http://localhost/phpMyAdmin

①进入D:\Program Files\phpMyAdmin-3.5.2.2目录下(phpMyAdmin根目录),新建文件夹config。

②以root身份登录phpMyAdmin如上图。此时会有提示:

phpMyAdmin的高级功能需要为它新建一个数据库,用来存放配置信息,而且需要新建一个用户,并获得管理控制这个数据库的权限。然后就能使用安装脚本启用相关的功能了。

③点击页面上的导入选项后,点击选择文件按钮,选择D:\Program Files\phpMyAdmin-3.5.2.2\examples\create_tables.sql 。

点击执行后,就会创建名为phpmyadmin的数据库。

④点击 用户->添加用户,在添加用户的界面,填写用户信息,并为该用户赋予所有权限(ALL PRIVILEGES,也就是下面的权限框全部选中。)点击“添加用户”按钮后,就会创建一个拥有全部权限的用户。

⑤点击左上角的主页按钮,进入主页后点击“更多配置”:

然后点击最下面的“安装脚本”的连接:

安装脚本的首页:

⑥点击“新建服务器”,填写服务器名称、主机名等信息,端口和套接字留空使用默认的就好。不要启用SSL连接,因为我们没有设置监听443端口的默认虚拟机,更没有设置服务器连接密钥等信息。

开始时创建数据库和用户的就是目的,就是为了能够在里配置高级功能选项。

控制主机可以留空,只需要填写控制用户和密码。其余内容,只需要点击后面的“铅笔符号”就可以自动填写了。

其余的选项的可以根据自己的需要,有选择的开启。但是,一定不要开启SSL连接。

配置好服务器后,点击下面的按钮保存设置。该保存操作并没有写入文件,只是放在了某个临时的文件或者内存区域里(大概以表单的形式传递给超全局数组保存了),要想保存在配置文件中,应该使用安装脚本主页的保存按钮。请看下图:

在这个页面中点击保存后,文件会别保存在config文件夹中,并且会被自动的命名为config.inc.php

⑦还可以通过左上角的导航,开启其他一些特性选项。

其中最有用的就是就是功能SQL查询

功能->开发选项中,可以开启一些开发设置,如显示错误,调试错误,调试SQL等功能。

SQl查询,提供SQL查询的选项,更有助于你的SQL开发。

⑧设置完成后,请确保按照第⑥步所述,进行了保存和文件保存。

⑨此时自己喜好的配置已经被保存在了config\config.inc.php文件中了。将config.inc.php移到phpMyAdmin的根目录下, config文件夹就可以删掉了。

重新登录phpMyAdmin,就可以看到效果了。如果登录失败#1043,大概是启动了SSl链接强制登录的配置的缘故。

11.安装Zend Framework2.0.0

安装Zend Framework2.0和1.X没有什么区别。

Zend Framework就是一组类库,使用ZF,和你创建自己的类库,然后调用它一样。只是ZF这组类库,功能更多更强大,代码也更好!

想要你的Zend Framework2.0正确且正常的工作,那么必须让你的PHP程序找到它。

虽然将ZF的放置在当前程序的目录里可用户代码可以访问到,但是当开发的程序很多时,这样做就显得愚蠢了。

正确的做法是将ZF文件夹的library包含进PHP的php.ini文件定义的include_path变量中,然后就可以在用户代码中方便的使用include_once或者include语句包含类库文件了。这种这种配置放法在Zend Framework 1.X的应用中比较常见。

Zend FrameWork 1.2与Zend Framework 2.0共存

include_path在只使用一个版本的ZF时是比较方便的,但是单1.X和2.X共存时,就会略显麻烦了,你懂的。

面对这种情况,霡霂认真阅读学习了ZendFramework-2.0.0的英文版文档。在文档中,虽然推荐使用include_path指令外,但是在其后介绍的项目中(一个简单的体验程序项目)使用却是另外一个apache的服务器变量ZF2_PATH。专门供ZF2使用。

为了使广大用户尽快的Getting Started with Zend Framework 2,在ZendFramework-2.0.0的英文文档中,简单介绍了一个基于ZF2的小的项目(ZendSkeletonApplication)的安装,并在之后的文章中详解了其代码的原理,也就是ZF2的简单使用。霡霂,将在下面详解其原理和安装:

①在php.conf文件中PHPIniDir……下面添加如下内容

SetEnv ZF2_PATH "D:\Program Files\ZendFramework\ZendFramework-2.0.0\library"

ZendFramework 2.0已经在本章第4节解压到D:\Program Files\ZendFramework中了。在原文档中是添加在httpd.conf中,但是我们推荐在php.conf文件中,该文件中内容都是关于php的配置,在不同版本的apache的配置文件中直接使用include命令直接引用就好。

②在httpd.conf文件中配置的中心虚拟主机的权限设置中增加

AllowOverride  All

指令,这一条已经在中心虚拟主机的配置中详细说明,具体配置请参考前面的章节。

③点击ZendSkeletonApplication进入下载页面,下载zip软件包。

④解压压缩包到D:\Program Files\ZendFramework中,并重命名为zf2-tutorial。如图:

⑤在php.conf文件最后添加如下指令:

<Directory "D:\Program Files\ZendFramework\zf2-tutorial\public">

    DirectoryIndex index.php

    AllowOverride All

    Order allow,deny

    Allow from all

</Directory>

<Location /zf2-tutorial>

  Order deny,allow

  Allow from all

</Location>

Alias /zf2-tutorial "D:\Program Files\ZendFramework\zf2-tutorial\public"

public文件夹,便是该文件的公共代码,用于用户直接访问。

⑥如果其他文件配置都正确,正确启动apache服务器后,在浏览器中输入http://localhost/zf2-tutorial/便可以访问了该项目了。

说明

zf2-tutorial的解压后放置的路径是随意的,因为只需要更改相应的配置文件中的路径就好。

如没设置ZF2_PATH,那么访问http://localhost/zf2-tutorial/就会出现如下的错误:

这种错误提示说的很明确:使用php composer.phar install命令行命令安装Zend Framwork 2.0或者为已经下载解压后的ZF2设置ZF2_PATH服务器变量。而两者只需要选择一个就可。

使用php composer.phar install命令后,它会自动的下载ZF2,并安装到了D:\Program Files\ZendFramework\zf2-tutorial\vendor\ZF2中,如下图:

12关于端口和端口冲突

在apache的安装时,通常会遇到端口冲突的问题。这些问题经常会让新手头疼。

端口就是操作系统中数据交换和监听的出入口。如apache,启动时会读取自己的配置文件,其中就有定义开启监听80端口的指令。这就是说,如果apache不启动,那么80端口就没有被监听(其他程序也没有监听80端口)。如果有某个程序已经监听了80端口,那么此时再启动apache就会出现端口冲突的错误。解决方法就是停止占用80端口的程序或者服务。而直接使用kill命令杀死占用80端口的程序,是愚蠢的方法,难道每次apache程序时都使用kill命令吗?最好的解决方法就是找到占用80端口的 程序,使其不开机启动。

霡霂的windows 7中安装了众多的服务器,apache2.2、apache2.4、apache2.2-zend、tomcat各种版本、nginx、jboss的各种版本、IIS的几个版本,而我在进行web开发的时候,只开启相应的服务即可:开发php5.4.X应用时,开启apache2.4,在使用zend server CE开发php应用时,开启apache2.2-zend这个apache服务。而开发Asp.net4.0是,不需要开启IIS,因为Visual Studio2010自带了内置的web服务器,而该服务器监听的不是80端口,而且在同时测试两个asp.net程序时,监听的端口是不同的,这是微软编程时解决端口冲突的方案。霡霂认为,由于本文章中apache的配置使用了中心虚拟主机,以及基于目录和基于URL的访问控制,可以在同一端口的虚拟主机中运行几个不同的项目,而项目之间也不会相互影响。所以一般不会产生端口冲突的问题。如果你非常想同时运行两个不同版本apache服务器,那么就监听不同的端口吧。

也可以为不同的项目配置不同的虚拟主机,基于IP或者基于域名的虚拟主机,由于我们无法在开发时为自己的环境配置不同的域名,只能为不同的虚拟主机监听不同的内网IP:127.0.0.X:80。如果使用了很多内网地址,那么localhost就可能就会失效,因为你此时输入localhost时,系统不知道把请求发送到哪个内网IP中。

我们在中心虚机主机的定义中,我们监听所有内网IP的80端口(*:80,*号在正则表达式中代表匹配任意字符)。如果你想专门为某个应用新定义一个虚机主机可以监听其他端口,如 *:8080 。

13下次教程预告

复杂的配置总是会使新手头疼,也总会有那么几个读者,忽视霡霂的忠告,随意的在学习阶段更改安装路径,请允许霡霂称呼这些人为SB,霡霂一而再,再而三的强调一些问题,并为此花了一个星期总结出这篇教程,就是为了纠正你们不好的习惯,但是仍然不听劝告!你不是SB是什么。

霡霂很耐心的总结,方便大家学习,没有采用国产图书惯用的教条的罗列内容的方法,而是使用详细叙述的方法详解内容。也是为了让大家不仅会做,而且知道为什么这么做。所以也需要每一位读者认真的阅读,不要图什么方便简洁,丢三落四。应注意前后的连贯性。

如果你只图方便快捷,注重表面工作,不注重内在原理和基础知识,做事不经思考,做事不认真,不尊重他人劳动成果,那么说明你并不适合计算机的工作,还是做别的工作吧,但是哪个行业不需要认真和严谨的态度呢,所以你还是去死吧,你这种人不适合活着!!!!!!!!

上天有好生之德,霡霂也想帮助任何一个需要帮助的人,所以即使没有认真的对待霡霂的劳动成果也不为难你,而是准备了更为低级、简单、基础的教程:

使用Zend Server CE配合Zend Studio 9.X开发PHP应用,但是仍然会用到一些本教程介绍的知识,如为不同的项目配置同一个虚拟主机或者配置不用虚拟主机。敬请关注我的微博更新。

二.软件知识必知

如果您对于apache的软件包足够了解,可以忽略本节。但是如果不心有疑问,阅读一下,可以省去很多麻烦,比如版本问题带来的疑惑。

1.Apache版本多多

Apache官方版本,是由APACHE基金会(apache.org)管理和发布的版本。而且还有专门面向PHP On Windows的版本Apache lounge。

1.1 版本号区分的版本

Stable Release -Latest Version

2.4这是httpd的最新稳定版本。大的版本号为2.4。该版本在性能上应该是最好的,据说超越以往所有的版本。而且加入了更多的新鲜特性。

Stable Release - 2.2 Branch

2.2.23这是httpd的稳定版本的2.2分支,在很多Linux上使用广泛。正因为如此,该版本一直更新维护至今。而且在更长的时间里不会被终止。

Legacy Release – 老兵不死

2.0.64最新的遗留版本,虽然是遗留版本,是因为在很多的Unix系统(Unix的血缘分支)上,仍然广泛使用。所以仍然提供更新支持。但是既然被称为Legacy Release,那么终止计划已经被提上议程。

1.2 和系统相关的版本

Unix Source,是tar.gz(或者tar.bz2)包,这是一个源码级别安装包,下载者需要进行编译安装。虽然可能因为环境依赖软件问题而安装失败,但是总体上来说,安装还是比较简单的。最为重要的是,在自己的计算机中编译并安装后的,能够获得最优的性能。特别是对于高手来说,经过修改后,得到随心所欲的性能提升。当然,该版本同样适用于Linux安装(完全没必要,几乎所有的Linux发行版均带有软件包管理器,软件包管理器提供在线下载,从而使得软件安装更方便)

Win32 Source,这是Windows 32位的源码包,2.4官方版本不提供Win32 Source包的下载。

Win32 Binary,这是Windows 32位的编译好的二进制安装包,2.0和2.2windows版本的编译都是在VC++6完成的。而2.4版本不提供相关的下载

NetWare Binary,这个是面向网络操作系统NetWare的,由于受到硬件和资源的限制,霡霂我也没有尝试使用。

2.Apache For PHP On Windows——Apache lounge

Apache基金会不提供2.4.X的Win32安装包,而www.php.net不提供Windows平台上的apache2.4.X的PHP5.4.X模块(php5apache2_4.dll,这个文件在PHP5.4.6的官方包中是没有的,只有php5apache2_2.dll和php5apache2_3.dll)。但是,要使PHP5.4.X作为apache的扩展模块加载而运行,这个文件必不可少。

所以Apache lounge应运而生。Apache lounge是类似于apache基金会的软件维护和开发组织,主要提供针对Win32的apache2.4.X以及相关模块提供软件包下载。

相关的软件包有:

Apache 2.4 win32 binaries

Apache 2.4 win32 modules (各种2.4的相关模块,其中就有我们需要的PHP模块)

Apache 2.2 win32 binaries

Apache 2.2 win32 modules(不包括Apache的PHP扩展模块了,因为在www.php.net提供的windows编译好压缩包中,已经有了。)

提示:Apache lounge提供的Windows软件包都是在X86 VC9或者VC10环境下编译的。

Apache基金会提供的apache有SSL和no_ssl版本的区别。而Apache lounge提供apache win32都是自带有SSL。使用SSL安全连接时,httpd服务监听的是443端口,对收发的信息进行加密。配置上比单纯的监听80端口复杂,所以虽然本文使用了的Apache带有SSL模块,而且加载了相关的模块,但是并不打算介绍SSL的具体配置情况。

3.PHP版本繁多

在 PHP 官网上新版的PHP,For Windows 的一共给了四个版本:

VC9 x86 Non Thread Safe、

VC9 x86 Thread Safe、

VC6 x86 Non Thread Safe、

VC6 x86 Thread Safe

3.1 VC6和VC9的区别

如何选择版本呢,在http://windows.php.net/download/页面的左侧,有英文的说明。大致意思是:

①.如果您使用的apache是apache.org下载的,那么轻使用VC6版本的。(PS:PHP5.3.X和5.4.X均不提供VC6版本的,只能使用PHP5.2.X了。)

②.如果您使用的web服务器是IIS,那么应该使用VC9版本的

③.VC6版本是使用Visual Studio 6编译的。

④.VC9 版本是使用Visual Studio 2008编译的,以提升性能和稳定性。

⑤.使用VC9版本,需要安装Microsoft 2008 C++ Runtime (x86) 或者 the Microsoft 2008 C++ Runtime (x64)。也就是程序运行时。

⑥.不要将VC9版本的PHP和apache.org的apache一起使用。(因为apache.org的apache是使用VC6编译的)。

⑦.VC9版本的PHP(5.4/5.3)可以和Apache lounge的apache一起工作。php.net使用Apache lounge的编译的文件作为PHP5.4/5.3的SAPI(也就是apache的PHP扩展模块,上文中提到的php5apache2_2.dll和php5apache2_3.dll)

3.2 Thread Safe和Non Thread Safe

先从字面意思上理解,Thread Safe 是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式而耗尽系统资源。Non Thread Safe 是非线程安全,在执行时不进行线程(Thread)安全检查。

再来看 PHP 的两种执行方式:ISAPI 和 FastCGI。

ISAPI 执行方式是以 DLL 动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以 ISAPI 来执行 PHP,建议选择 Thread Safe 版本;

而 FastCGI 执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI(无论搭配 IIS 6 或 IIS 7)执行 PHP,都建议下载、执行non-thread safe 的 PHP(PHP 的二进包有两种:msi 、zip,请下载 zip 套件)。

本文的安装的是PHP5.4的Thread Safe版本,并且将PHP作为apache的SAPI安装(扩展模块)。这种安装方式更为安全。

如有问题,以PHP官方文档为准,如果发现本文中的不当之处,可以联系我。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值