下面分别介绍使用apt-get
方式在Linux下搭建PHP+Mysql+Apache运行环境,如果是root权限的话可不加sudo
,普通用户需要使用sudo
获取临时root权限来进行安装:
###安装Mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
###安装Apache
sudo apt-get install apache2
下面分别介绍使用apt-get
方式在Linux下搭建PHP+Mysql+Apache运行环境,如果是root权限的话可不加sudo
,普通用户需要使用sudo
获取临时root权限来进行安装:
###安装Mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
###安装Apache
sudo apt-get install apache2
在PHP中创建验证码很方便,创建好验证字符串和使用GD库函数创建图像就ok了。这里不说明怎么去创建验证码,其中当我们来创建验证字符时,我们是怎么做到的呢?
下面比较下作者见到的两种方式来生成字符:
第一种方式
<?php
$str = 'abcdefghigkmnprstuvwxyABCDEFGHGKLMNPQRSTUVWXY3456789';
$n = 6; //生成字符的个数
$code = '';
$length = strlen($str);
for ($i=0; $i < $n; $i++) {
$code .= $str[mt_rand(0, $length-1)];
}
echo $code;
?>
在Web开发中,经常需要将本地的文件上传到Web服务器上,也可以从服务器上进行文件的下载。文件的上传和下载十分的广泛,在PHP中可以接受来自几乎所有类型浏览器上传的文件,还允许对服务器的上传和下载进行控制。
上传文件过程:
##客户端上传设置
最基本的方法,是使用html的表单选择本地文件并进行提交,在form表单中使用<input type="file">
标签来选择本地文件。如果想要支持文件上传,还必须在form中加入enctype
和method
属性:
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN,是不是很棒、很神奇啊!
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
首先,我们要了解Github这个神奇的网站,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。所以我们要先注册一个github帐号。
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,下面介绍一下具体的配置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),输入命令创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
现在,我们已经在本地创建了一个版本库,那么如何在Github创建了一个仓库,并且让这两个仓库进行远程同步呢?
##添加远程库
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:
##撤销修改
现在,我们查看下one.txt
文件:
$ cat one.txt
git is the best
I love git
error content
假如,当我们没提交前,又想撤销这次的修改,那该怎么办呢?这时我们可以直接手动删除修改的内容,恢复到原来的版本。此时,我们可以使用git status
查看下:
首先,我们要知道在Git中任何的操作都是一个修改,那删除文件肯定也是一个修改操作了,在工作区删除一个文件可以使用rm -f file
的命令来操作:
$ rm -f one.txt
此时,Git已经知道你删除了文件,这时候的工作区和版本库也不一样了,可以使用git status
来查看:
hanson@host-linux:~/learngit$ git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: one.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
首先,我们要清楚Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。下面来看几个概念:
###工作区
工作区就是我们在电脑里看到的目录,比如我的learngit就是一个工作区。
###版本库
在工作区中都有一个.git隐藏文件夹,这个就是所谓的Git版本库。
###暂存区
Git的版本库里有很多的文件,其中比较重要的就是stage(或者index)文件,这个就是暂存区。还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD。
现在,我们重新修改下文件并添加和提交到版本库:
$ echo '再次添加新内容' >> readme.md
$ git add ./readme.md
$ git commit -m '更新内容'
像这样,我们不断的对文件进行修改,并一次一次的提交到版本库。就像我们在玩游戏时,每过一关我们都会保存当前的状态,以防备哪次被打败了,我们就可以选择重新读取保存的状态,然后可以从最近的地方重新开始玩。Git也是一样的道理,每当你觉得文件修改到一定程度的时候,就可以保存一个快照,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。