在Mac OS X中配置Apache + PHP + MySQL

来源:互联网 发布:分层抽样 excel 数据 编辑:程序博客网 时间:2024/04/29 22:54
    最近正在学习php,自然第一步就是搭建开发环境,熟料看似简单,中间却不时的出问题,开始在windows机器上搭建很顺利,但在MAC上就不那么顺利了,现在回顾起来其实里面是有很多小细节需要注意的,所以现在将网上搜集的资料结合可能遇到的问题根据自己的经验整理出来(如果您不愿意将您的原创内容被我引用至此,请与我联系,谢谢!)。因为内容比较长,所以决定分两篇文章来讲解。内容如下:

1. 启动Apache
2. 设置虚拟主机
3. 运行PHP
4. 安装MySQL
5. 使用phpMyAdmin
6. 配置PHPMCrypt扩展库
7. GD库安装
8. 增加CAPTCHA支持
9. 增加Zendframework
10.其他可能遇到的问题

------------------------------------------------------------------------------------------------------------------------------------------------------------------

.启动Apache
有两种方法:
1. 打开系统偏好设置(System Preferences-> 共享(Sharing-> 勾选“Web共享(Web Sharing
2. 打开终端(terminal,然后
2.1. 运行sudo apachectl start,再输入帐号密码,这样Apache就运行了。
2.2. 运行sudo apachectl v,你会看到Mac OS X 10.6.7中的Apache版本号:

Server version: Apache/2.2.17 (Unix)
Server built: Jan 17 2011 20:56:17
这样在浏览器中输入http://localhost,就可以看到出现一个内容为It works!的页面,它位于/Library(资源库)/WebServer/Documents/下,这是Apache的默认根目录。

PS:开启了Apache就是开启了Web共享,这时联网的用户就会通过http://[本地IP]/来访问/Library(资源库)/WebServer/Documents/目录,通过http://[本地IP]/~[用户名]来访问/Users/[用户名]/Sites /目录,可以通过设置系统偏好设置安全(Security中的防火墙(Firewall来禁止这种访问。

二.设置虚拟主机
1. 在终端运行sudo vi /etc/apache2/httpd.conf,打开Apache的配置文件
2. httpd.conf中找到#Include /private/etc/apache2/extra/httpd-vhosts.conf,去掉前面的,保存并退出。
3. 运行sudo apachectl restart,重启Apache后就开启了它的虚拟主机配置功能。
4. 运行sudo vi /etc/apache2/extra/httpd-vhosts.conf,这样就打开了配置虚拟主机的文件httpd-vhost.conf,配置你需要的虚拟主机了。需要注意的是该文件默认开启了两个作为例子的虚拟主机

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

ServerName dummy-host.example.com

ServerAlias www.dummy-host.example.com

ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"

CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common

</VirtualHost>

 

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host2.example.com

DocumentRoot "/usr/docs/dummy-host2.example.com"

ServerName dummy-host2.example.com

ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"

CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common

</VirtualHost>

而实际上,这两个虚拟主机是不存在的,在没有配置任何其他虚拟主机时,可能会导致访问localhost时出现如下提示:

Forbidden

You don't have permission to access /index.php on this server
5. 最简单的办法就是在它们每行前面加上#,注释掉,这样既能参考又不导致其他问题。然后增加如下配置(比如我将虚拟主机的目录放到我的个人文件夹下的“站点(Sites)”目录下,名为mySite):
<VirtualHost 127.0.0.1>

ServerName mySite

DocumentRoot /Users/refresh/Sites/mySite

//下面这段不是必需的,最好加上,但注意参数根据自己的需要更改

<Directory /Users/refresh/Sites/mySite>

AllowOverride All

Options All

</Directory>

</VirtualHost>

PS.其实这段内容可以参考httpd-vhost.conf给出的示例来设置
34. 保存退出,并重启Apache
35. 运行sudo vi /etc/hosts,打开hosts配置文件,加入127.0.0.1mySite“,这样就配置完mySite虚拟主机了,就可以用http://mySite/”访问了,与“http://localhost/~[用户名]/Sites/mySite”完全一致。

PS:其实也可以在需要设置虚拟主机的目录放置一个httpd.conf文件,其内容和上面所说的一致,然后再修改httpd.conf

Include /private/etc/apache2/extra/httpd-vhosts.confInclude/Users/refresh/Sites/mySite

三.运行PHP(apache增加php支持

1. 在终端中运行sudo vi /etc/apache2/httpd.conf,打开Apache的配置文件。(如果不习惯操作终端和vi的可以设置在Finder中显示所有的系统隐藏文件,记得需要重启Finder,这样就可以找到对应文件,随心所欲编辑了,但需要注意的是某些文件的修改需要开启root帐号,但整体上还是在终端上使用sudo来临时获取root权限比较安全。)
2. 找到#LoadModule php5_module libexec/apache2/libphp5.so,把前面的#号去掉,保存并退出
3. 运行sudo cp /etc/php.ini.default /etc/php.ini,这样就可以通过php.ini来配置各种PHP功能了。比如:通过下面两项来调整PHP提交文件的最大值,比如phpMyAdmin中导入数据的最大值
upload_max_filesize = 2M
post_max_size = 8M
再比如通过display_errors来控制是否显示PHP程序的报错
display_errors = Off

运行sudo apachectl restart,重启Apache,这样PHP就可以用了。
4. 运行cp /Library/WebServer/Documents/index.html.enibrary/WebServer/Documents/info.php,即在Apache的根目录下复制index.html.en文件并重命名为info.php(或者直接创建一个php文件
5. vi中编辑info.php文件(vi /Library/WebServer/Documents/info.php)或者直接使用你喜欢的文本编辑软件编辑它。加入<?php phpinfo();?>,保存。这样就可以在http://localhost/info.php中看到有关PHP的信息了。

四.安装MySQL

由于Mac OS X中并没有预装MySQL,所以需要自己手动安装。MySQL提供了Mac OS X下的安装说明
1. 选择合适的版本并下载。
2. 运行下载的dmg文件,会发现里面有4个文件。首先点击安装“mysql-版本号-osx10.6-x86_64.pkg”,这是MySQL的主安装包。 一般情况下,安装文件会自动把MySQL安装到/usr/local下的同名文件夹下。比如点击运行mysql-版本号-osx10.6- x86_64.dmg会把MySQL安装到“/usr/local/mysql-版本号-osx10.6-x86_64,一路默认安装完毕即可。
3. 点击安装第2个文件MySQLStartupItem.pkg,这样MySQL就会自动在开机时自动启动了。
4. 点击安装第3个文件MySQL.prefPane,这样就会在系统设置偏好中看到名为MySQL设置项,通过它就可以设置MySQL开始或停止,以及是否开机时自动运行。到这里MySQL就基本安装完毕了。
5. 通过运行sudo vi /etc/bashrc,在bash的配置文件中加入mysqlmysqladmin的别名

#mysql
alias mysql='/usr/local/mysql/bin/mysql'
alias mysqladmin='/usr/local/mysql/bin/mysqladmin'
6. 这样就可以在终端中比较简单地通过命令进行相应的操作,比如安装完毕之后MySQLroot默认密码为空,如果要设置密码可以在终端运行mysqladmin -u root password "mysqlpassword"来设置,其中mysqlpasswordroot的密码,更多相关内容可以参考相关文档。
PS:Mac OS X的升级或者其他原因可能会导致MySQL启动或者开机自动运行,在MySQL的操作面板上会提示Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql',或者在命令行下提示Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2),这应该是某种情况下导致/usr/local/mysql/data的宿主发生了改变,只需要运行sudo chown -R mysql /usr/local/mysql/data即可。

五.使用phpMyAdmin


phpMyAdmin是用PHP开发的MySQL管理程序,非常的流行和实用。能够使用phpMyAdmin管理MySQL是检验前面几步成果的非常有效方式。
1. 选择合适的版本并下载。
2. 刚下载的phpMyAdmin-版本号-all-languages文件夹复制到/Users/[用户名]/Sites中,改名为phpmyadmin
3. 复制/Users/[用户名]/Sites/phpmyadmin/中的config.sample.inc.php,并命名为config.inc.php
4. 打开config.inc.php,做如下修改:

用于Cookie加密,随意的长字符串
$cfg['blowfish_secret'] = ''; cookie 写上吧)

phpMyAdmin中出现#2002无法登录 MySQL 服务器时,  请把localhost改成127.0.0.1ok了,(这里挺重要),这是因为MySQL守护程序做了IP绑定(bind-address =127.0.0.1)造成的
$cfg['Servers'][$i]['host'] = 'localhost';
另外,把false改成true,这样就可以访问无密码的MySQL了,即使MySQL设置了密码也可以这样设置
$cfg['Servers'][$i]['AllowNoPassword'] = false;
5. 通过http://localhost/~[用户名]/phpmyadmin访问phpMyAdmin。这个时候就看到一个提示无法加载mcrypt 扩展,请检查您的 PHP配置。,这就涉及到下一节安装MCrypt扩展了。

六.配置PHPMCrypt扩展

MCrypt是一个功能强大的加密算法扩展库,它包括有22种算法,phpMyAdmin依赖这个PHP扩展库。但是它在Mac OS X下的安装却不那么友善,具体如下:(安装软件前你要先在电脑里安装XCODE,要不编译不了软件)

1. 下载并解压libmcrypt-2.5.8.tar.bz2
2. 在终端执行如下命令:

cd ~/Downloads/libmcrypt-2.5.8/
./configure --disable-posix-threads --enable-static
make
sudo make install
3. 下载并解压PHP

在终端执行如下命令:

cd ~/Downloads/php-5.3.6/ext/mcrypt
phpize (这是一条命令)
./configure
make
cd modules
sudo cp mcrypt.so /usr/lib/php/extensions/no-debug-non-zts-20090626/
5. 打开php.ini

sudo vi /etc/php.ini

php.ini中加入如下代 码

extension=/usr/lib/php/extensions/no-debug-n on-zts-20090626/mcrypt.so

保存后退出,然后重启apache
当你再访问http://localhost/~[用户名]/phpmyadmin时,你会发现无法加载mcrypt 扩展,请检查您的 PHP配置。的提示没有了,这就表示MCrypt扩展库安装成功了。

七.增加gd支持

mac 自带的php默认是没有启用gd支持的,需要额外编译gd库。

sudo bash
Install libjpeg
PS安装GD支持安装libjpeg,所以我们先创建一个源代码目录并下载代码编译安装。
mkdir -p /SourceCache
cd /SourceCache
下载并解压
curl -O http://www.ijg.org/files/jpegsrc.v8c.tar.gz
tar xzpf jpegsrc.v8c.tar.gz
cd /SourceCache/jpeg-8c
cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
32位的使用:
./configure --enable-shared
64位的使用:
MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS="-arch ppc -arch ppc64
-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch
ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch
ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch
ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure
--enable-shared
最后编译安装:
make clean
make mkdir -p /usr/local/include
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
mkdir -p /usr/local/man/man1
make install
这样libjpeg就安装好了。
下面安装GD库。 (因为之前下载安装了php,在phpext目录下有gd扩展)

cd ~/Downloads/libmcrypt-2.5.8/ext/gd
32位的使用:
phpize

./configure --with-zlib-dir=/usr
--with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6
--with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
64位的使用:
MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS="-arch ppc -arch ppc64
-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch
ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch
ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch
ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure
--with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib
--with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6
--with-xpm-dir=/usr/X11R6
特别注意执行一下Notice代码,避免出现/usr/X11/lib/libpng.3.0.0.dylib: No such file or directory的错误提示。
sudo ln -s /usr/X11/lib/libpng.3.dylib /usr/X11/lib/libpng.3.0.0.dylib
make clean
make make install
(上面的命令后如果:/usr/lib/php/extensions/no-debug-non-zts-20090626/ 目录下没有gd.so那就执行下面的命令:

cd modules
sudo cp gd.so /usr/lib/php/extensions/no-debug-non-zts-20090626/

配置php加载gd.so
编辑/etc/php.ini ,增加一行
extension=gd.so
如果没有/etc/php.ini,则使用
echo -e extension=gd.so > /etc/php.ini 创建它。
配置 extension_dir="/usr/lib/php/extensions/no-debug-no n-zts-20060613"
这个目录在make install里也能看到。
重启httpd :sudo apachectl restart

.增加CAPTCHA支持

在一般的网站注册中我们经常会看到要求根据一副图像来输入一个验证码,从而避免机器注册。在PHP里面,我们可以通过CAPTCHA来完成这种功能,具体方法如下:
先从http://pear.php.net/上下载一下组件:
Text_CAPTCHA
Text_Password
Image_Text
然后将组件整合到PHP中,首选需要为PHP添加Pear功能以支持组件扩展,操作步骤如下:

curl http://pear.php.net/go-pear.phar > go-pear.phar

sudo php -d phar.require_hash=0 go-pear.phar

PS跟着步骤走,让你打安装目录的时候换到/usr/local(注意看提示),提示要更新php.ini的时候让他更新

接下来安装上面的三个组件:

pear install -f Text_CAPTCHA
pear install -f Image_Text
pear install -f Text_Password

PS:这里-f表明安装非稳定版本,安装过程可能需要等待一段时间安装完成后,屏幕会有提示。另外,在运行上面的命令时可能会提示你说找不到可用版本,并提示有一个带版本号的beta版本,那就在上面的命令后附加上版本号再次执行(注意看提示,安装这三个组件非常简单!)。

九.配置Zendframework

安装 Zend Framework 非常简单。只要你下载并解压它,并把发行版里的/library 文件夹加到你的 include路径里就行了。 你也可以把 library 文件夹移动到其它可共享的位置。具体可参考官方文档。

PS:一定要注意将 /library 文件夹加到你的include 路径里,我就是没有做好这步,始终都没找到无法运行的原因,甚是苦恼!

十.其他问题

待续....

或者可以留言说一下遇到的问题..
原创粉丝点击