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代码然后再发送给客户端。

php自学笔记1的更多相关文章

  1. 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...

  2. 《Linux内核设计与实现》课本第三章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第三章自学笔记 进程管理 By20135203齐岳 进程 进程:处于执行期的程序.包括代码段和打开的文件.挂起的信号.内核内部数据.处理器状态一个或多个具有 ...

  3. 《Linux内核设计与实现》课本第十八章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一 ...

  4. python自学笔记

    python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 ...

  5. ssh自学笔记

    Ssh自学笔记 Ssh简介 传统的网络服务程序,如:ftp.pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据.而且,这些服务 ...

  6. JavaScript高级程序设计之自学笔记(一)————Array类型

    以下为自学笔记. 一.Array类型 创建数组的基本方式有两种: 1.1第一种是使用Array构造函数(可省略new操作符). 1.2第二种是使用数组字面量表示法. 二.数组的访问 2.1访问方法 在 ...

  7. vue 自学笔记记录

    vue 自学笔记(一): 知识内容:  安装vue ,创建vue实例,安装第一个组件,单项数据流 https://www.cnblogs.com/baili-luoyun/p/10763163.htm ...

  8. JS自学笔记05

    JS自学笔记05 1.例题 产生随机的16进制颜色 function getColor(){ var str="#"; var arr=["0","1 ...

  9. JS自学笔记04

    JS自学笔记04 arguments[索引] 实参的值 1.对象 1)创建对象 ①调用系统的构造函数创建对象 var obj=new Object(); //添加属性.对象.名字=值; obj.nam ...

  10. JS自学笔记03

    JS自学笔记03 1.函数练习: 如果函数所需参数为数组,在声明和定义时按照普通变量名书写参数列表,在编写函数体内容时体现其为一个数组即可,再传参时可以直接将具体的数组传进去 即 var max=ge ...

随机推荐

  1. stack例子

    栈使用在括号匹配中的例子 程序如下: #include<stack> #include<iostream> using namespace std; int main() { ...

  2. Andriod:如何卸载模拟器上已经安装的应用程序?

    根据学习对HelloWorld进行手术的时候,遇到了一个问题: 就是在修改了布局后,重新链接模拟器时报错: Installing helloworld.apk... Re-installation f ...

  3. 精灵类(CCSprite)

    一.对精灵的理解 玩家控制的主角.AI控制的NPC,以及地图上的宝箱.石块,甚至游戏主菜单的背景图片都是精灵.因此,可以这样认为,玩家看到的一切几乎都是由精灵构成的. 精灵不一定是静态的.通常,一个精 ...

  4. Android开发之玩转FlexboxLayout布局

    在这之前,我曾认真的研究过鸿洋大神的Android 自定义ViewGroup 实战篇 -> 实现FlowLayout,按照大神的思路写出了一个流式布局,所有的东西都是难者不会会者不难,当自己能自 ...

  5. PHP读书笔记(1)-PHP语法结构与变量

    一 .php基础语法 1.php语法结构 标准风格:<?php code; ?>.PHP每句代码用;(分号)结尾.<---就用这个,其他的看看就可以了 短风格:<? code; ...

  6. java与.net比较学习系列开发环境和常用调试技巧常用操作快捷键

    调试         F5 F11 调试运行   CTRL+F5 暂无 非调试运行   F6 不适用 编译整个解决方案   SHIFT+F6 不适用 编译当前选择的工程   SHIFT+F5 CTRL ...

  7. euqals和hashcode

    hashcode这个方法是用来鉴定2个对象是否相等的. 那你会说,不是还有equals这个方法吗? 不错,这2个方法都是用来判断2个对象是否相等的.但是他们是有区别的. 一般来讲,equals这个方法 ...

  8. javascript 布局 第20节

    <html> <head> <title>页面布局</title> <style type="text/css"> bo ...

  9. 互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 相关教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...

  10. jQuery如何阻止子元素继承父元素事件?

    <a> <b></b> </a> $("a").click(...); 这种绑定的话,b也会响应一次事件,如何只对a元素绑定事件,而 ...