1.基本概念
- PHP:hypertext preprocessor,开源脚本语言
- 静态网站和动态网站概念及区别
- 动态网站inurl:*.(aspx/php/jsp)
- 客户端服务器端数据传输过程(http请求,http响应)b/s c/s架构(browser/server client/server)
- http请求服务器到默认端口号
web服务器默认端口80
MySQL服务器默认端口3306
FTP默认端口21
- 常用dos命令:
进入盘符:[盘符+:(冒号)]
进入目录:【cd+目录路径】
运行程序时,可为程序设置环境变量path路径,在当前盘符找不到时,会逐条查找已设置path路径
查询端口占用情况:命令行netstat -ano 中间有空格,几个无所谓,后面是参数。
命令行面板自身可以设置属性(颜色,字体等)
任务管理器可以看pid进而确定端口占用程序
- 前台和后台,前台显示数据,后台操作数据。
2.PHP开发组合lamp和wamp配置
(1)apache安装配置
apache下载地址 http://httpd.apache.org/download.cgi ,选择files for ms win,再选择apachehaus
(https://www.cnblogs.com/godlei/p/6445391.html)
apache和vmware端口冲突可将vmware服务手动停止
安装完成后访问服务器的语法,http://服务器ip地址:[端口号],localhost和127.0.0.1访问验证
path环境变量设置路径间用;(分号)间隔
apache安装文件夹各目录文件夹含义和内容:
bin是binary的缩写,代表的意思是二进制文件,bin这个文件夹里存放的是二进制可执行的文件,比如exe,msi,com等的都是二进制文件,双击就能运行。当然bin文件夹里面也不是全部都是可执行文件,也有与可执行文件配套的其他组件。
conf是config,配置文件,服务启动参数,功能模块启动配置
htdocs是默认站点,站点目录(虚拟目录)
modules是模块,有可能加载的功能模块
apache工作机制:apache本身没有功能,功能是加载的模块提供,首先解析配置文件,然后加载静态/动态模块,再进行系统资源初始化
httpd -v 版本version
-t 测试test
-M module大M,测试已加载模块
(2)php安装
http://php.net/manual/zh/index.php php手册
- 将php作为一个模块提供给apache加载,让.dll文件成为动态连接库文件
加载模块语法 ;Load Module 模块名 模块路径
(apache conf设置: LoadModule php7_module "D:\php\php\php7apache2_4.dll")
(配置文件的指令不区分大小写,但是模块名区分大小写)
- 在请求php页面时候调用php模块
在apache的htdocs中写一个测试页面,页面内容如下,请求此页面,发现没有执行此页面
<?php
phpinfo();
原因:php不知道什么时候调用php模块
解决:告诉apache服务器,在请求php页面时调用php模块(apache conf设置查找Addtype后添加: AddType application/x-httpd-php .php)
- 加载php配置文件
php.ini-development文件复制一份并命名php.ini
方法一(需要管理员权限,一般不使用)
更改apache配置,告诉apache到指定位置加载php.ini文件(PHPIniDir "D:\php\php")
- 设置时区
phpini中更改默认时区utc到prc
(3)Mysql安装
- 安装时,若要变更安装路径,选择custom自定义
- 加载php扩展
开启phpini中的扩展extension(开启extension=php_mysqli.dll 开启 extension_dir = "路径D:\php\php\ext")
从PHP5.0开始就不推荐使用mysql_connect()函数,到了php7.0则直接废弃了该函数,替代的函数是:
$conn=mysqli_connect("localhost","root","123456");
if($conn){
echo"ok";
}else{
echo"error";
}
从mysql8.0后,caching_sha2_password是默认的身份验证插件,而不是以往的mysql_native_password
解决办法:mysql ini中加入default_authentication_plugin=mysql_native_password 或者
mysql client中输入指令
①use mysql;
②ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
(https://blog.csdn.net/youcijibi/article/details/81153789?utm_source=blogxgwz1)
(4)其他配置
-
更改apache虚拟目录
在httpd.conf配置文件中更改root对应目录:DocumentRoot "${SRVROOT}/htdocs"
更改虚拟目录权限,更改directory对应目录,并确定权限内容 <Directory "${SRVROOT}/htdocs">,AllowOverride None
列出文件夹中的目录结构:Options Indexes FollowSymLinks(directory下面)
- 更改默认首页
<IfModule dir_module>
DirectoryIndex index.html aa.php
</IfModule>
- 更改端口
确定监听端口
访问方式:local host:80(设置的端口)
- DNS解析
DNS(domain name server)域名解析服务器,对应计算机唯一标识ip
C:\Windows\System32\drivers\etc\hosts中设置
- 虚拟主机
开启虚拟目录:apache httpd conf中开启# Include conf/extra/httpd-vhosts.conf
对应配置文件主机中设置目录名和主机名
#<VirtualHost *:80>
# DocumentRoot "C:\www1"
# ServerName www.test.com
#</VirtualHost>
#<VirtualHost *:80>
# DocumentRoot "C:\www2"
# ServerName www.phpmyadmin.com
#</VirtualHost>
此时,不添加directory权限会访问失败(forbiden)
关闭主配置文件中虚拟目录,directory项目全部注释或者不注释,否则apache启动失败;
域名为www.php.com时虚拟主机访问目录会回到默认主机中来,改为test.com,目前不清楚原因
Options Indexes FollowSymLinks 配置此项目,因主页名错误访问默认主页时可把默认主页文件夹中的文件名显示出来(可在主配置文件夹中设置,在虚拟主机中增加此项目)
概念补充:
站点:文件夹,保存与网页有关文件
虚拟目录:站点加权限
虚拟主机:虚拟目录和域名绑定在一起
- mysql可视化工具
mysql客户端
window客户端 mysqlfront navicat
web客户端 phpMyAdmin
- 定界符
(哪些内容浏览器执行,哪些代码服务器执行),有标准,短标记,asp,script脚本四种。
php ini中设置short_open_tag = On,则支持短标记
标准风格
<?php
echo'hello';
?>
短标记风格
<?
//短标记
echo'first blood'
?>
- 错误输出机制
php变量未定义时错误输出
在php.ini里面设置:error_reporting = E_ALL & ~E_NOTICE
display_errors = On