PHP(Personal Home Page的缩写,现已更名Hypertext Preprocessor“超文本预处理器”)
静态web开发:html,内容一成不变
动态web开发: php(Zend)、jsp(sun-oracle)、asp(微软)、asp.net、cgi,
运行在服务器端,由程序决定内容
--------------------------------
历史
-------------------------------
用Perl语言编写的程序,显示个人履历,以及统计网页流量;
用C语言重新编写,包括可以访问数据库;
PHP1.0版本,提供了访客留言本、访客计数器等简单的功能。
PHP 2版本,有 PHP 的一些雏型,类似 Perl的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。
PHP 3版本,更名Hypertext Preprocessor, 成立了 Zend Technologies公司 来管理 PHP 的开发。
PHP 4、5使用了第二代的Zend Engine。包含了强化的面向对象、引入PDO(PHP Data Objects存取数据库的延伸函数库)。
PHP6 更好的支持web2.0,Unicode支持,强化的面向对象,对xml编程的支持,soap(简单对象协议)
------------------------------------
特点
------------------------------------
跨平台,支持多种数据库
免费(成本低)且是开源代码(可二次开发)
上手快,相对简单,被嵌入于HTML语言,实用性强,更适合初学者
Php 消耗相当少的系统资源,效率高,安全性好
面向对象,php完全可以用来开发大型商业程序。
解释执行的语言
缺点:
安装复杂,配置繁琐
数据太灵活,解释执行,运行时才能暴露程序对错
-----------------------------------------
功能
-------------------------------------------
PHP 能够生成动态页面内容
PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
PHP 能够接收表单数据
PHP 能够发送并取回 cookies
PHP 能够添加、删除、修改数据库中的数据
PHP 能够限制用户访问网站中的某些页面
PHP 能够对数据进行加密
---------------------------------
开发工具ide
---------------------------------
商业版:Zend Studio,PhpEd,Adobe Dreamweaver,PHP Storm
免费版:Eclipse with PDT,NetBeans,Aptana Studio
***c/s与b/s
c/s
client 客户端 server 服务器
需要对客户端机器有要求
安全性高
效率变低
b/s优势
browser 浏览器 server 服务器
1.开发成本低
2.管理维护简单
3.产品升级便利
4.对用户培训费用低
5.用户使用方便,出现故障概率小
b/s不足:
1.安全性不足
2.客户端不能随心变化,受浏览器限制
c/s与b/s相反
web服务器:
1.为什么需要web服务器?
因为要从服务器取数据或者提交给服务器数据
2.怎样查看发送或接受到的是什么?
用httpwatch工具来获取,有利于我们了解的更加透彻
3.web服务器有哪些?
iis服务器--微软为 asp.net服务
lighttpd 德国 轻便、效率高 成熟度低于apache
nginx 俄国 内存少,并发能力强,使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
apache 排名第一最流行,可靠 基于模块化
----------------------------
环境配置
----------------------------
1.安装web服务器:Apache2.2
(1)下载httpd-2.2.22-win32-x86-no_ssl.msi
(2)浏览器中http://localhost ---> it works即成功
(3)关闭/启动 进入apache bin 命令行 httpd -k shutdown/restart
(4)默认端口80,查看端口 netstat -an,监听端口的使用程序 netstat -anb
(5)配置文件 conf下的httpd.conf 可以修改端口号
【注意】一个端口号只能被一个应用监听,但一个应用可以监听多个端口
bin: 常用命令
cgi-bin: linux下命令
conf 配置
htdocs 存放用户web工程文件(默认)
manual 手册
error 错误记录
#配置虚拟目录
<IfModule dir_module>
#DirectoryIndex相当于欢迎页面
DirectoryIndex index.php index.html
#站点别名
Alias /mydemo "E:/mydemo"
</IfModule>
#设置访问权限设置
<Directory "E:/mydemo">
Order allow,deny #先允许所有ip访问,deny拒绝所有
Allow from all #先看看allow中允许的ip
</Directory>
例如:
Order deny,allow #先拒绝192.168,然后允许192.168.2.2
deny from 192.168
Allow from 192.168.2.2
结果是拒绝除192.168.2.2以外的以192.168开头的所有ip
#配置虚拟主机
(1)启用httpd-vhosts.conf
在httpd.conf中去点 Include conf/extra/httpd-vhosts.conf前的#
(2)conf/extra/httpd-vhosts.conf中修改第二个VirtualHost如下
<VirtualHost *:80>
DocumentRoot "E:/mydemo"
#设置欢迎页面
DirectoryIndex index.php index.html
<Directory />
#不允许别人修改页面
AllowOverride None
#设置访问权限
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
(3)修改host访问
本地 C:\Windows\System32\drivers\etc下的hosts文件,解析ip地址与域名对应关系(localhost即域名)
如果没有查到域名,去外网dns服务器查找
hosts文件添加 127.0.0.1 higcom
127.0.0.1 www.sohu.cn
2.安装php开发核心包:
http://php.net下载
修改httpd.conf改 LoadModule php5_module,使apache能检索到php安装路径
修改php.ini
设置php扩展库路径extension_dir 为文件夹ext的路径
开启库功能extension
3.安装ide: phpstorm
在phpstorm中File->Settings->php(languages&Frameworks下的php)
interpreter中选择php.exe安装路径,如G:\web_tools\AppServ\php6\php.exe
第一个php程序
<?php
echo "我的第一段 PHP 脚本!"
?>
【注意】
1.输出方法有两种:echo 和 print
区别:
echo - 能够输出一个以上的字符串,没有返回值,速度快
print - 只能输出一个字符串,并始终返回 1,速度慢
例如:
<?php
echo "输出","aaa","bbb";
print "打印";
?>
2.输出服务名 echo $_SERVER["SERVER_SOFTWARE"];
3.常见错误:
(1) phpstorm中502 bad gateway:无效网关
解决办法:File->Settings->php(languages&Frameworks下)设置php.exe
或者File—Settings—Build,Execution,Deployment—Debugger修改端口号为80
(输入无效,按上下按钮才有效,耗时太长,推荐1)
若还是502,在任务管理器中看是否有php-cgi在工作,结束掉该进程即可。
----------------------------------------------------------
php运行原理
----------------------------------------------------------
客户端发送给服务器一个请求时,若请求资源为html文件时,服务器直接将html文件发送给客户端浏览器;
若请求的是php文件,服务器将php解释为标准的html代码然后再发送给客户端。