当前位置: 首页 > 编程日记 > 正文

[亲测]在Mac下配置php开发环境:Apache+php+MySql

公司给我们配上了高大上的Apple Mac Pro本本,这两天自己正在习惯中。通过虚拟机PD,确实解决了一些因为工作习惯无法在iOS上很好完成的事情,但是我想,既然用起了iOS就尽量将一些事务在iOS环境下处理,免得好似关羽耍着大刀却骑着小木马。以前在windows下安装PHP开发环境,都是省事,直接下载一个集成包,如XMAPP 、AMPPS 之类的,已经很多年没在IIS里或者自己在windows下一个一个去配置、去搞这个东东了。iOS本身好似就是基于Linux内核起身的操作系统,所以本身就自带了一些Apache之类的东东,于是向还是在iOS下搭建一个PHP的开发环境,闲来无事的时候摸索摸索。

网上也搜索了一些教程,相对以前的windows下安装,确实简单了不小。

第一步:启动Apache

很多教程上写“有两种方法”,我觉得无头无尾的,也没想明白,也没去管它。我倒觉得应该是说,有两个操作。

1、在配置中启动“互联网共享”。

打开"系统偏好设置"->"共享",在"互联网共享"那一项前面打√。

这里操作的时候好似当时有点疑惑,就是怎么选择的问题,我也没搞太明白,大致随便在下面勾选了一个连接方式,保存好似也就过了。

2、启动Apache

打开Launchpad,找到“终端”,也就好似windows下的命令行,DOS方式类似那样。在Linux下应该叫做shell吗?呵呵,不太清楚。

输入下面的命令启动Apache

sudo apachectl start

输入的时候注意,Apache后面那个是字母l,不是数字1。我居然在这里还搞晕了一下。

启动要输入密码,就输呗,开机密码即可。一般来说没输入错,就正常启动了。

启动后,通过输入下面命令,可以查看Apache版本信息。

sudo apachectl -v

说到这里,我就稍微自我领悟了一下,如果领悟错了,以后自己来改。高手们请一笑而过吧~

sudo好似是运行的意思, apachectl 是Apache服务的名称,后面带一些参数,比如start就是启动,restart就是重启。后面每次修改config文件的时候,都需要重启才能生效。诸如此类。

好了,到了这里,Apache就启动完毕。一个WebServer就可以运行了。

在浏览器中输入http://localhost,会出现It works!的页面。

第二步:启动PHP

Apache启动后,Web服务启动,但这是并不支持PHP运行,需要启动PHP。所幸,iOS也自带了PHP,而且也是安装好的,只需要启动即可。

具体操作如下:

找到Apache的配置文件,一般来说在目录/etc/apache2/下。若不是很熟悉怎么在iOS下找目录,请跟我做:打开Finder,选择"前往"-"前往文件夹",输入"/etc/apache2/",找到其中的"httpd.conf"这个配置文件。

选择用文稿打开进行编辑,点按Command+F,搜索 #LoadModule php5_module libexec/apache2/libphp5.so

在该配置文件中,前面加#号的,表示注释掉不起作用的。所以我们要启动PHP模块,只需要将这一行前面的#去掉即可。

去掉之后,保存该httpd.conf文件即可。

这个时候问题来了,因为默认对该文件夹没有操作权,会提示文本锁定,无法解锁的情况,解决办法有两种:

a)选中该文件,右击后选择"显示简介",点击右下角的小锁的图标,输入电脑密码解锁,然后选择左边的+号键,选择自己当前电脑登陆的用户,将权限设置为读与写,如果还是不行,将其上一级文件夹权限同样再修改一次。

b)将该文件复制到桌面,进行修改,修改后再复制到原来的文件夹替换之前的文件即可。

我自己是一定做到b步骤,也就是复制到桌面,修改再贴回去才搞定的。这种情况好似在windows下也有过,类推。

修改了httpd.conf文件,是需要重新启动Apache才生效的。重启的命令如下:

sudo apachectl restart

至此,PHP启动完毕!

那么,我们怎么知道它是否成功呢,实践是检验真理的唯一标准,我们来测试一下。

这就又说到另一件事情,就是Apache的web根目录在哪里的问题。我开始在Apache文件夹下找,半天都没在,后来看了网上的说明,才知道在

/Library/WebServer/Documents/ 这个目下。也就是直接通过Finder直接转到该目录下即可找到我们之前访问到的 index.html.en 文件。

/Library/WebServer/Documents/这个目录同样涉及到修改权限的问题,当然也可以像上文那样修改,不过是在是太不方便了。于是我采取修改httpd.conf文件的方式,修改了Web根目录的指向。

具体是这样操作的:当然还是打开httpd.conf文件先。郁闷,还是得用复制到桌面的那个文件来改,然后再贴换到/etc/apache2/目录下替换,然后重启Apache使其生效。

打开httpd.conf,找到

DocumentRoot "/Library/WebServer/Documents"<Directory "/Library/WebServer/Documents">

将引号里的改成自己想建立的web目录。我是这么修改的:在Users/lintianyu/目录下建立一个MyWebRoot的目录,然后修改上述代码为:

#DocumentRoot "/Library/WebServer/Documents"
#<Directory "/Library/WebServer/Documents">
DocumentRoot "/Users/lintianyu/MyWebRoot"
<Directory "/Users/lintianyu/MyWebRoot">

保留它原来的,用#注释掉,以防自己忘记。然后增加自己新建立的这个目录地址。

然后再重启Apache,使其修改生效。

在Users/lintianyu/目录新建一个info.php的文件,输入以下代码:

1 <?php phpinfo(); ?>

保存。

打开浏览器,输入 http://localhost/info.php ,如果一切不出意外的话,即可看到熟悉的PHPinformation的页面!

第三步:MySQL的安装

首先是下载MySQL,这个iOS可没有自带,网址如下:

http://dev.mysql.com/downloads/mysql/  真佩服老外做的东西,几十年如一日,网址永不变。

版本无穷多,注意以下几个细则:

  • 看准操作系统,iOS
  • 看准是否是最新版本,一般上面是最新版本
  • 看准格式,DMG Archive的应该更适合iOS下小白们的安装
  • 看准适应硬件,32位还是64位的。Mac自然选64位的。

看准了,免得下了用不了,恼火。

目前我下的版本是:

Mac OS X 10.10 (x86, 64-bit), DMG Archive   5.7.9  322.9M

300多M,得花一点时间,速度不算快。

下载完毕,单击dmg文件,说解压缩会有四个文件,但我的版本好似只看到一个文件,也没有刻意去关注了

杀千刀的,居然在MySQL 5.7版本开始,不再默认位空密码,而是生成一堆杂碎密码。我手贱,一下子点没了,现在花了几个小时在搞怎么找回这个密码。

安装之后,可以在系统偏好设置中选择启动或者关闭MySql。

在终端输入下面的命令,这里修改密码为12345,也可为其他,自定义即可

/usr/local/mysql/bin/mysqladmin -u root password 12345

为了方便,设置别名也是不错的做法,就好似DOS下的path一样

alias mysql=/usr/local/mysql/bin/mysql

再来一个MySQLadmin的

alias mysqladmin=/usr/local/mysql/bin/mysqladmin

MySQL安装完毕。

第四步:PhpMyAdmin

1、下载phpMyAdmin,在网址http://www.phpmyadmin.net/home_page/downloads.php中选择合适的版本下载。

版本很多,但选择并不困难,主要看:选择最新版的,选择多语言的(如果英文足够牛也可以选择只要英文的),选择自己熟悉的压缩方式的。

2、将下载好的文件解压后,放进/Users/lintianyu/MyWebRoot/这个Web根文件夹中,并将后面的一大堆后缀删除,直接命名为phpmyadmin,便于自己访问。

3、复制/Users/lintianyu/MyWebRoot/phpmyadmin中的config.sample.inc.php,并命名为config.inc.php,并放在当前文件夹下。(它之前自己都没有个config.inc.php吗?奇怪)

4、编辑config.inc.php,修改其中的连接信息

1 '$cfg['Servers']]$i]['host'] = 'localhost';
2 $cfg['Servers']]$i]['host'] = '127.0.0.1';
3 '为什么要修改,差别何在我也没搞清楚

然后修改连接密码。如果不想输入密码,则按如下方式修改成为false

1 $cfg['Servers'][$i]['AllowNoPassword'] = false

在浏览器中输入 http://localhost/phpmyadmin,输入用户名"root",和刚刚自己所更改的密码,如果未更改密码,则按照上一步骤中的无密码操作,然后就可以直接登陆了。

大功告成!

转载于:https://www.cnblogs.com/lintianyu/p/5020802.html

相关文章:

RabbitMQ 异常与任务分发

RabbitMQ 异常与任务分发 异常情况处理 上篇最后提到了这个问题&#xff0c; consumer异常退出、queue出错、甚至rabbitMQ崩溃。因为它们都是软件 &#xff0c;软件都会有bug&#xff0c;这是无法避免的。所以RabbitMQ在设计的时候也想到了这一点 在之前&#xff0c;消息分发给…

reddit_如何使用Python创建自定义Reddit通知系统

redditby Kelsey Wang王凯西 如何使用Python创建自定义Reddit通知系统 (How to make a custom Reddit notification system with Python) Don’t you just love automated emails? I know I do. I mean, who doesn’t enjoy waking up to 236 new messages from Nike, Ticket…

1016. Phone Bills (25)

时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, Yue去掉非法数据计算账单A long-distance telephone company charges its customers by the following rules:Making a long-distance call costs a certain amount per minute, depending on the…

样式集(五)微信朋友圈样式模拟

效果图&#xff1a; 小图标&#xff1a; 源码&#xff1a; <!--pages/findList/findList.wxml--> <image class"xxiangji" catchtap"xxiangji" src"/images/xxiangji.png"></image> <image class"top_img" src&…

为什么要选择useState而不是useReducer

by Austin Malerba奥斯汀马勒巴(Austin Malerba) 为什么要选择useState而不是useReducer (Why you should choose useState instead of useReducer) 通过useState进行本地和全局状态管理的指南 (A guide to local and global state management via useState) Since the introd…

php 类中的变量的定义

php 如果在类中定义变量&#xff0c;在类的方法中调用时应该加上$this-> . class ClassName {private $a 333;function __construct(){$this->a 2222;}public function bbb($value){echo $this->a;} } $b new className(); echo $b->bbb();转载于:https://www.c…

微信小程序云数据库触底分页加载,下拉无限加载,第一次请求数据随机,随机获取数据库的数据

效果图 小程序云开发分页加载代码 <!--pages/chatList/chatList.wxml--> <view class"pageTitle">家博慧</view> <view class" search_arr"><icon class"searchcion" size16 typesearch></icon><input …

Linux(Centos)之安装Java JDK及注意事项

1.准备工作 a.因为Java JDK区分32位和64位系统&#xff0c;所以在安装之前必须先要判断以下我们的Centos系统为多少位系统&#xff0c;命令如下&#xff1a; uname -a解释&#xff1a;如果有x86_64就是64位的&#xff0c;没有就是32位的。后面是X686或X86_64则内核是64位的&…

2019web前端趋势_2019年最值得关注的Web开发趋势

2019web前端趋势by Mrudul Shah通过Mrudul Shah 2019年最值得关注的Web开发趋势 (Top Web Development trends to look out for in 2019) Do you know that nearly 200 websites are pushed out every minute? Sounds astonishing right? But it is a fact and that’s why …

WPF入门教程系列九——布局之DockPanel与ViewBox(四)

七. DockPanel DockPanel定义一个区域&#xff0c;在此区域中&#xff0c;您可以使子元素通过描点的形式排列&#xff0c;这些对象位于 Children 属性中。停靠面板其实就是在WinForm类似于Dock属性的元 素。DockPanel会对每个子元素进行排序&#xff0c;并停靠在面板的一侧&…

tabBar 自定义,小程序自定义底部导航栏

创建一个自定义组件 my_tab&#xff0c;组件代码在后面&#xff0c;先看调用自定义组件的代码&#xff0c;比如我需要在index 页面调用&#xff0c;就在index.json中引用组件&#xff0c;index.json 代码&#xff08;引用的路径为你创建的自定义组件路径&#xff09; {"n…

2015年最新出炉的JavaScript开发框架

前端框架简化了开发过程中&#xff0c;像 Bootstrap 和 Foundation 就是前端框架的佼佼者。在这篇文章了&#xff0c;我们编制了一组新鲜的&#xff0c;实用的&#xff0c;可以帮助您建立高质量的 Web 应用程序的 JavaScript 框架清单。 1.Aurelia Aurelia是下一代JavaScript客…

小程序前端性能测试_如何提高前端应用程序的性能

小程序前端性能测试If your website takes longer than 3 seconds to load, you could already be losing nearly half of your visitors.如果您的网站加载时间超过3秒&#xff0c;则可能已经失去了将近一半的访问者。 Yes this is a fact, proven by several research studie…

10-TypeScript中的接口

接口是一种规约的约定&#xff0c;从接口继承的类必须实现接口的约定。在高级开发中&#xff0c;通常接口是用于实现各种设计模式的基础&#xff0c;没有接口&#xff0c;设计模式无从谈起。 定义接口&#xff1a; interface ILog{recordlog():boolean; } 类从接口继承&#xf…

样式集(六)仿微信通讯录样式

效果图&#xff1a; 这里有引用到 自定义底部导航&#xff0c;自定义底部导航组件链接 <!--pages/chatList/chatList.wxml--><!-- <include src"/components/common/common" /> --> <view class"top"><view class"pageTi…

WCF动态添加ServiceKnownType

WCF中传输自定义类型时&#xff0c;必须在服务接口类&#xff08;服务协定&#xff09;上加上ServiceKnownType(typeof(yourClass)), 在实际应用中比较麻烦&#xff0c;可以用动态的办法来实现动态添加。 服务接口类&#xff0c;加上一行 [ServiceKnownType("GetKnownType…

博客 rss 如何使用_如何使用RSS从您的GatsbyJS博客自动交叉发布

博客 rss 如何使用With the recent exodus from Medium many developers are now creating their own GatsbyJS Blogs and then cross-posting to Medium or publications like freecodecamp.org and dev.to.随着Medium最近的离职&#xff0c;许多开发人员现在正在创建自己的Ga…

大型技术网站的技术( 高并发、大数据、高可用、分布式....)(一)

面对高并发、大流量、高可用、海量数据、用户分布广泛、网络情况复杂这类网站系统我们如何应对&#xff1f;&#xff1f;&#xff1f; 第一阶段 一台服务器不行就上多台服务器 1.应用程序与数据服务分离 将应用程序、数据库、文件等资源放在一台服务器上&#xff0c;面对海量…

BestCoder Round #65 B C D || HDU 5591 5592 5593

B 题意&#xff1a;ZYB在远足中,和同学们玩了一个“数字炸弹”游戏&#xff1a;由主持人心里想一个在[1,N][1,N]中的数字XX&#xff0c;然后玩家们轮流猜一个数字&#xff0c;如果一个玩家恰好猜中XX则算负&#xff0c;否则主持人将告诉全场的人当前的数和XX比是偏大还是偏小&a…

数组去重,ES6数组去重 new Set()

普通数组去重 var b [...new Set([1,2, 3, 4, 5, 5, 5, 5])]console.log(b); 输出结果&#xff1a; 包含对象的数组去重 var o {a:1}var b [...new Set([o, o, 3, 4, 5, 5, 5, 5])]console.log(b); 输出结果&#xff1a; 包含对象的数组去重有一个坑 var b [...new Set([{…

使用angular的好处_在项目中使用Angular的最大好处

使用angular的好处by Irina Sidorenko伊琳娜西多连科(Irina Sidorenko) 在项目中使用Angular的最大好处 (The top benefits of using Angular for your project) 在项目实施中使用Angular的11个理由及其好处 (11 reasons to use Angular and its benefits for your project im…

python之路——模块和包

一、模块 1、什么是模块&#xff1f; 常见的场景&#xff1a;一个模块就是一个包含了Python定义和声明的文件&#xff0c;文件名就是模块名字加上.py的后缀。 但其实import加载的模块分为四个通用类别&#xff1a; 1、使用Python编写的代码&#xff08;.py文件&#xff09; 2、…

夺命雷公狗---linux NO:3 centos_mini版的安装和备份

废话不多说&#xff0c;和前面的其实是差不多的&#xff0c;如下图所示&#xff1a; 安装其实是和桌面版的差不多的&#xff0c;但是经典版的不能自定义分区&#xff08;如详细区&#xff0c;如home之类的&#xff09;。。。 因为我们使用的是命令行方式的所以直接选英文&#…

快速学习 async await 的使用, Demo 解析

async 和 await 字面都很好理解&#xff0c;分别是异步和等待。 来两个简单的 demo&#xff0c; demo1 tt2(){return new Promise(rps>{setTimeout(() > {rps(true)}, 1500);})},async tt1(){var a await this.tt2();console.log(a)},/*** 生命周期函数--监听页面加载*…

小型工作室创业项目_为什么新开发人员应该在小型创业公司工作

小型工作室创业项目In my first year of working in the industry (6 months as an intern, 6 months as a full-time employee), I worked at startups that were less than 10 people large. I was one of the only 2 or 3 developers, and usually one of the first. Throug…

head first python菜鸟学习笔记(第六章)

1. Python提供字典&#xff0c;允许有效组织数据&#xff0c;将数据与名关联&#xff0c;从而实现快速查找&#xff0c;而不是以数字关联。 字典是内置数据结构&#xff0c;允许将数据与键而不是数字关联。这样可以使内存中的数据与实际数据的结构保持一致。&#xff1f;&#…

小程序聊天室开发,发送文字,表情,图片,音频,视频,即时通讯,快速部署,可定制开发

效果图&#xff1a; 微信小程序聊天功能模块&#xff0c;现在已经支持发送图片&#xff0c;文字&#xff0c;音频&#xff0c;视频&#xff0c;表情&#xff0c;在线即时聊天啦。 需要做的可以联系我微信。13977284413 上代码&#xff1a; <view class"bo">…

常用浏览器插件

modify headers &#xff1a;firefox的IP伪造插件 httpRequester&#xff1a;firefox的模拟http请求插件JSON-handle&#xff1a;chrome格式化json插件firebug&#xff1a;firefox查看http请求工具firepath&#xff1a;firefox中获取元素路径转载于:https://www.cnblogs.com/xx…

编码中统一更该变量的快捷键_更多项目想法,以提高您的编码技能

编码中统一更该变量的快捷键Two weeks ago I published an article containing 15 project ideas that you can build to level up your coding skills, and people were very excited about that resource.两周前&#xff0c;我发表了一篇文章&#xff0c;其中包含15个项目构想…

My97DatePicker日历控件日报、每周和每月的选择

My97DatePicker日历控件日报、每周和每月的选择 1、设计源代码 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><h…