一直想学PHP, 但每次都因为其复杂的环境搭建望而止步, 最近在两位大神的帮助下终于搞定了, 分享安装过程及踩到的各种坑
官网: http://sourceforge.net/projects/xampp/files/
我下的是XAMPP5.6.14-4版本
下载完后解压按步骤安装即可, 这里我就遇到奇葩的坑了, 每次解压完安装时第一遍都会失去响应, 必须force quit
安装目录一般都在:/Applications/XAMPP
一般情况下第一次安装, 上图的那三个开关都start的, 但是也不排除出错的可能:比如我按照网上的教程稀里糊涂的修改了/private/etc/apache2
下的httpd.conf
文件, 结果Apache Web Server一直stopped, 各种无奈, 重装了几次XAMPP都不行, 猜想肯定改了系统的东西, copy的别人的httpd.conf
文件才搞定.
安装成功的标志就是在浏览器中输入localhost
自动跳转到http://localhost/dashboard/并打开网页,
或者点击Go to Application
的按钮, 效果一样
如果你都OK了, 恭喜你可以进入下一步了
打开文件(不懂的千万不要动里面的其他代码)
把图中所示的两行代码
# Various default settings
# Include etc/extra/httpd-vhosts.conf
中的第二行前面的#去掉, 图中我已去掉了
主要作用就是引入虚拟主机的配置文件
可以根据所述路径找到并打开
重启Apache Web Server
, 这个时候浏览器中你输入localhost
就会出错了, 为什么呢? 那肯定和引入的这个配置有关吧,
是的, 当你引入httpd-vhosts.conf
配置时, 原来的httpd.conf
配置就失效了^~^. 所以我们要在httpd-vhosts.conf
中配置一下
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
</VirtualHost>
这里重新配置回了localhost原来的指向路径DocumentRoot;
OK, 重启Apache Web Server
你再试试, 哈哈, 熟悉的页面又回来了吧
说明一下: 设置它的DocumentRoot其实是让localhost
访问DocumentRoot
路径下的index.php
文件, 它才真正是应用的入口, 就像OC的man.m
文件
好了重点来了,
那么我想加载其他的项目文件怎么办呢, 继续配置这个文件
这里我下载的是Yii2 框架http://www.yiichina.com/download
<VirtualHost *:80> //监听端口
ServerName zhzblog.com //服务器名字
ServerAlias www.zhzblog.com //服务器别名
DocumentRoot /Applications/XAMPP/xamppfiles/htdocs/Yii2Blog-master/web //项目的入口文件index.php所在的文件夹
# DirectoryIndex index.php 指定加载文件, 不设置就加载index.php
/* 设置 DocumentRoot文件夹的权限, 如果你打开网页出现access forbidden问题, 就配置一下, 没出现不配置也行
<Directory /Applications/XAMPP/xamppfiles/htdocs/Yii2Blog-master/web>
#设置当一个请求中没有给定请求的文件名又没有默认网页(首页)的时候, 显示文件列表
Options Indexes FollowSymLinks Includes ExecCGI
#设置权限控制的先后顺序, 只有两种: Deny,Allow(先拒绝后允许), Allow,Deny(先允许后拒绝)
Order Deny,Allow
#设置拒绝访问名单
Deny from 拒绝名单 比如: deny from 192.168.1.1 172.180.4
Allow from 允许名单 比如: Allow from All
Require all granted
#设置该文件夹下的"默认网页"(首页), 可以设置多个, 用于请求中不带文件名的时候自动使用该文件作为"返回"页面
DirectoryIndex index.php main.php abc.html
</Directory>
*/
</VirtualHost>
注意注意注意了, 我就在这里卡了好久好久:设置DocumentRoot
时, 路径一定要是英文引号, 最好不要引号, 否则打开zhzblog.com
网址时会出现Object no found
的问题, 打开下图错误日志
你会看到这个问题, 莫名的多了~\xe2\x80\x9c~
AH00112: Warning: DocumentRoot [\xe2\x80\x9c/Applications/XAMPP/xamppfiles/htdocs/Yii2Blog-master/web\xe2\x80\x9d] does not exist
想了好久才知道是引号的问题
~~~~~~~~~~
然后就是设置域名的问题了
打开/etc/hosts
做如下配置
127.0.0.1 www.zhzblog.com
127.0.0.1 zhzblog.com
OK, 到这里差不多都配置好了, 重启Apache Web Server
, 浏览器中输入www.zhzblog.com或者zhzblog.com, 如果你发现网页上出现An internal server error occurred.
不要伤心
Congratulations on your!!
你已经配置成功了
至于为什么会出现这个问题, 你打开error log
就会发现了
因为Yii2 帮你搭建好的框架但是其中需要存放数据的table需要自己创建
其实XAMPP已经帮我们创建了几个数据库了, 不需要在下载, 如果你想下载最新的也行,替换/Applications/XAMPP/xamppfiles
路径下的phpmyadmin
文件夹就行
下载最新phpMyAdmin版本:http://www.phpmyadmin.net/
phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web.
浏览器输入http://localhost/phpmyadmin/
你会打开phpMyAdmin, 这时候你发现创建表可能会出现错误, 如果出现类似#1146 - Table ‘phpmyadmin.pma_table_uiprefs' doesn't exist
的错误
如果你能成功创建数据库, ok, 你可以跳过这个步骤了, 去配置Yii2需要的表
如果你出现了类似的错误, 跟着我配置也许能解决你的问题
首先
然后打开config.inc.php
进行配置
$cfg['blowfish_secret'] = 'xampp'; /* YOU SHOULD CHANGE THIS FOR A MORE SECURE COOKIE AUTH! */
/**
* Servers configuration
*/
$i = 0;
/**
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
//ture允许无密码操作, false不允许
$cfg['Servers'][$i]['AllowNoPassword'] = true;
/**
* phpMyAdmin configuration storage settings.
*/
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '';
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
$cfg['Servers'][$i]['recent'] = 'pma_recent';
$cfg['Servers'][$i]['users'] = 'pma_users';
$cfg['Servers'][$i]['usergroups'] = 'pma_usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma_navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma_savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma_central_columns';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['designer_settings'] = 'pma_designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma_export_templates';
$cfg['Servers'][$i]['favorite'] = 'pma_favorite';
/* Contrib / Swekey authentication */
// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';
/**
* End of servers configuration
*/
/**
* Directories for saving/loading files from server
*/
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
注意: pma_bookmark
的前缀pma_
如果出现上面#1146 - Table ‘phpmyadmin.pma_table_uiprefs' doesn't exist
错误么你可以
方法一: 导入文件(如果你是从官网下载的是没有sql
文件夹的, 可以去 example
夹找找)
方法二: 替换config.inc.php
中的前缀pma_
为pma__
, 或者pma__
替换为pma_
保存, 重启MySql, 或者重启电脑
创建Yii2所需要的数据库及5个table
就到这里吧, 这是我安装的过程中出现的问题, 每个的情况可能不一样, http://stackoverflow.com/是个好地方
1.坑一
2.坑二
3.坑三
4.坑四