官方给出的[使用Composer安装](https://www.kancloud.cn/manual/thinkphp6_0/1037481)是比较正统的方法,也是每个Phper都应该掌握的技能。 在XAMPP的支持下,使用Composer来安装tp6也同样非常简单。 >[warning] 本节中将介绍一些命令,我们强烈建议你将这些命令直接粘贴过去,而不是照着敲一遍。 # Hello ThinkPHP TP官方给出了使用Composer的安装方式,虽然该方法对初学者而言并不是最简单的,但却是每个开发者都需要掌握的。 Composer就相当于电脑上的软件管家、手机中的应用市场。在没有Composer之前,我们需要手动的找到相关软件,然后下载安装。有了Composer后,一切都变得非常的简单、正规、安全。 其中不只PHP有Composer来管理自己的软件,像JAVA、Python、JavaScript(node)等也都有专门管理软件的软件,在编程语言中,我们通常把这个管理软件的软件叫做包管理器。所以用官方的话来说:Composer是一款服务于PHP的包管理器。 TP呢,则是这个包管理器管理下的一个包。我们可以在Composer包管理器的支持下,快的完成TP这个软件(包)的安装、更新等操作。由于各个操作系统下的操作会略有不同,请按自己使用的操作系统选择继续阅读。 windows系统请点击[windows](./2107019)继续学习。 macos系统请点[macos](./2107020)继续学习。 ubuntu系统请点击[ubuntu](./2107021)继续学习。 教程中在使用Composer下载TP时,我们指定了YP的版本为6.0.6,这完全是为了教学而设定的,统一版本将自动规避一些因小版本不同而带来的不必要的问题。在实际开发过程中,推荐大家使用最新的版本,即将以下命令: ```bash composer create-project topthink/think=6.0.6 tp6 ``` 修改为: ```bash composer create-project topthink/think tp6 ``` 当然了,在实际开发中如果你对某个版本情有独钟,也可以像教程一样来指定相关的版本。你可以在[https://packagist.org/packages/topthink/think](https://packagist.org/packages/topthink/think)获取所有thinkphp的信息。 ## 网络问题 对于中国的程序员而言,网络的确是个问题。在下载Composer的过程中,如果你真的实实在在的试了千百遍依旧下载失败,那么你也可以这样做: 打开团队的文件服务器: [http://nas.yunzhi.club:5010/sharing/dTeYhY2xt](http://nas.yunzhi.club:5010/sharing/dTeYhY2xt)(密码: yunzhi.club) 下载thinkphp6.0.6.zip,并将其解压至对应xampp的htdocs文件夹中,文件夹名称命名为:tp6。目录层级大体如下:`xxxx/htdocs/tp6/public/index.php`。 当然这只是临时的解决方案,正规的方法还是需要Composer,而且本教程的后续章节还会涉及到使用Composer安装导入、导出excel的第三方库,界时同样需要Composer。 # 发生了什么 为了更加清楚访问`http://localhost/tp6/public/index.php`时到底发生了什么,我们本节进一步做展开说明。 其实计算机的世界无非是在解决数据传输、数据处理、数据存储的几大基本问题。当我们使用浏览器来访问特定的地址时,我们当前的计算机将根据我们指定的访问地址进行数据的传输。数据传输到服务器后,服务器使用特定的程序来处理请求的数据,最后再将处理的结果返回给请求的计算机。 那么在使用浏览器访问`http://localhost/tp6/public/index.php`时,具体发生了什么呢?要弄明白这个问题,我们首先由`http://localhost/tp6/public/index.php`入手: ## URL `http://localhost/tp6/public/index.php`通常被称为url(Universal Resource Locator 或 Uniform Resource Locator),代表在全球范围内唯一的网页资源。比如我们在网上获取好的资源时,可以通过分享url将此资源分享给其它用户。简单来说,它是个网址,而每个网页都有一个对应的网址。 这个url由三部分组成:协议类型、主机名、路径名及文件名。比如`http://localhost/tp6/public/index.php`的协议类型是`http`,主机名是`localhost`,而路径文件名是`tp6/public/index.php`。 协议类型常见有`http`,该协议也是网页请求的默认协议,比如我们说打开`www.mengyunzhi.com`,实际上相当于是打开`http://www.mengyunzhi.com`; 除此以外还有更安全的`https`协议,用于文件传输的ftp协议等。 主机名简单来说就是电脑的名字,每台电脑都有一个名字,该名字往往是我们安装操作系统随意指定的。这在局域网中电脑数很少的情况下是没有任何问题的,但如果将很多台电脑放到一个互相能看到的大网络中,由于起名的随意性会造成**重名**的问题。为了解决这个问题,国际上有个专门的组织来负责计算机在网络上起名的问题,而计算机在网络上的名字便是域名。之所以称为域名,是由于相对于名字只能给一台计算机而言,域名是可以给一群计算机的。比如`com`是个域名,在`com`这个域名下还存在`baidu.com`、`taobao.com`、`jd.com`域名,在`baidu.com`还可以存在`www.baidu.com`、`tongji.baidu.com`域名等。由于这种特性,我们有时候也称`com`为根域名、顶级域名、一级域名,称`baid.com`为次级域名、二级域名。 我们可以使用身份证信息来与主机名域名体系做参照。主机名 = 身份上的名字,域名 = 身份证号码。主机名用于某个局域网,在某个我们自己维护的局域网上是唯一的,就像我们这个小家族中只有一个潘杰;而域名用于互联网,在整个网络上是维一的,就像13022519xxxxxxxxxx这个号码在全国范围内只有一个一样。而身份证号的前两位代表省市,13代表河北省,这就像域名上的根域名;0225为区县代码,代表乐亭县,这就好像是域名上的二级域名。 路径文件名相对很好理解了,就是访问某台计算机网站资源的具体位置。互联网的早期,路径文件名就是真实的物理位置,比如我们当前的`tp6/public/index.php`,就是指提供http服务应用根目录下的`tp6/public/index.php`文件。现在由于服务器可以模拟这些位置,所以路径也可能是虚拟位置。比如我们可以访问`tp6/public/index.html`来查看ThinkPHP的初始化内容,但服务器的htdocs文件夹中,并不存在`tp6/public/index.html`文件。 >[info] 除此以外,url还存在端口、查询参数、锚点信息,在此不做阐述。 ## 域名与IP 计算机网络数据传输和现实生活的快递原理相同,核心解决的都是物质传递的问题。在邮快递时,我们除了要提供收件人的名称以外,还需要提供提所在的具体具体。比如我的收件地址为:天津职业技术师范大学 天津市津南区大沽南路1310号 在这里好记的`天津职业技术师范大学`便是域名,而较难记的`天津市津南区大沽南路1310号`便是ip地址。与实际的快递略有差距的是,在计算机进行信息传递时,只需要给出好记的域名,而较难记的IP地址将交由计算机自动完成。在计算机网络中,有个专门来将域名转换为IP地址的服务,叫做DNS。 在计算机中,我们可以在shell中输入`ping www.baidu.com`来查看`www.baidu.com`这个域名对应的IP地址。 ## 访问过程 ![](https://img.kancloud.cn/78/13/7813de5d04ac115f57597b6bc5752bd6_717x185.png) 当本机的浏览器访问`http://localhost/tp6/public/index.php`时,计算机首先获取主机名(域名)localhost,并借助dns服务将其转换为ip地址。每台计算机都维护着一条这样的DNS信息`127.0.0.1 localhost`,表示主机名(域名)`localhost`对应的IP地址为`127.0.0.1`,而`127.0.0.1`在网络中有个特殊的含意:本机。 接着计算机将请求信息发送到`127.0.0.1`也就是本机提供`http`服务的软件apache。 apache获取到请求信息后,获取该请求信息中的主机名(域名)以及路径文件名`/tp6/public/index.php`,再根据内置的规则调用`tp6/public/index.php`。 调用完成后将调用返回的结果回传给请求者。 ThinkPHP规定所有的请求都仅能交给`public/index.php`来处理,我们将`index.php`称为入口文件,我们把这种只能通过某个文件来访问的应用称为`单入口应用`。 ## 查看文件 后续的开发我们将在tp6文件夹中进行,那么如何查看该文件夹的内容呢? ### windows 找开d:/xampp/htdocs/tp6文件夹,即为我们后续需要操作的thinkphp的代码。 ### macos 普通模式下使用finder打开/Applications/XAMPP/htdocs/tp6文件夹。 虚拟机模式按以下步骤操作: ![](https://img.kancloud.cn/7a/25/7a25c21ee0be11abdfee86592429d779_486x133.png) 打开xampp后来到Volumes选项卡,然后点击Mount。此操作将使我们可以在本机中查看虚拟机的`opt/lampp`文件夹。 ![](https://img.kancloud.cn/f1/3d/f13df144c7f02a73ee8bf5caed50b862_438x78.png) 点击Explore在本机预览虚拟机`opt/lampp`文件夹 ![](https://img.kancloud.cn/6d/f9/6df90e653b72e74f744c5c322a2e0c35_820x257.png) 所以此时`htdocs`文件夹即为虚拟机中apache的根目录:`/opt/lampp/htdocs`文件夹。而tp6文件夹则是我们上节中使用composer下载的`/opt/lampp/htdocs/tp6`文件夹。此时访问`http://192.168.64.2/tp6/public/index.php`则相当于访问了如下文件: ![](https://img.kancloud.cn/a7/d9/a7d9912d4463172a2a6030b9cc3a210e_865x306.png) ### ubuntu 使用文件查看器查看/opt/lampp/htdocs/tp6文件夹。 # 本节作业 1. 除了composer外,几乎所有的语言都有包管理器,请试着列出2-3个。 2. 将手机与电脑连接到同一个路由器上,关闭电脑的防火墙并获取电脑局域网的IP地址,尝试使用手机访问:`http://电脑局域网IP/tp/public/index.php`,看是否能成功显示欢迎页面。