PHP 是一种开源的服务器端脚本语言,主要用于 Web 开发,可嵌入 HTML 中执行,支持与 MySQL、PostgreSQL 等数据库交互。
以下是几个核心实用方向的精准要点:
1. 基础语法 :文件后缀为 .php ,通过 <?php ?> 标签嵌入代码,支持变量( var )、数组、循环( for / foreach )和函数定义。
**2. Web 核心应用** :处理 HTTP 请求( _GET / $_POST 获取参数)、会话管理( session_start() )、Cookie 操作,常用于开发动态网页、表单提交功能。
3. 数据库操作 :传统方式用 mysqli 或 PDO 扩展连接数据库,避免 SQL 注入需使用预处理语句。
php
// PDO 连接 MySQL 示例
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "password");
stmt = pdo->prepare("SELECT * FROM users WHERE id = ?");
stmt-\>execute(\[id]);
user = stmt->fetch();
4. 框架与部署 :主流框架有 Laravel(优雅简洁、功能全面)、ThinkPHP(国产轻量、适合快速开发);部署时需搭配 Web 服务器(Nginx/Apache)和 PHP 解释器(php-fpm)。
5. Linux 环境部署要点:可通过 apt-get install php php-fpm nginx 快速安装(Debian/Ubuntu 系统),配置 Nginx 转发 .php 请求到 php-fpm 端口(默认 9000)
一.php环境配置
1.使用集成环境
-
XAMPP(最流行)
-
包含:Apache + PHP + MySQL + phpMyAdmin
-
安装步骤:
-
下载对应版本
-
运行安装程序
-
选择安装目录(避免中文路径)
-
启动控制面板
-
点击Apache和MySQL的Start按钮
-
-
-
WampServer支持多PHP版本切换
-
PHPStudy(中文版)
- 更适合国内用户
2.手动安装
-
下载PHP
powershell
# 访问官网下载 # 选择Thread Safe版本(用于Apache) # 解压到文件架(C:/php) -
配置PHP
ini
; 编辑 php.ini-development 重命名为 php.ini ; 启用常用扩展(去掉分号) extension=mysqli extension=pdo_mysql extension=curl extension=gd extension=mbstring extension=openssl -
配置Apache
apacheconf
# 在 httpd.conf 中添加 LoadModule php_module "C:/php/php8apache2_4.dll" AddHandler application/x-httpd-php .php PHPIniDir "C:/php"
二.开发环境配置
1. PHP配置优化(php.ini)
php
; 开发环境推荐设置
display_errors = On ; 显示错误
error_reporting = E_ALL ; 报告所有错误
max_execution_time = 300 ; 脚本最大执行时间
memory_limit = 256M ; 内存限制
upload_max_filesize = 50M ; 最大上传文件大小
post_max_size = 55M ; POST数据最大大小
date.timezone = Asia/Shanghai ; 时区设置
; 开启OPcache(PHP 7+)
zend_extension=opcache
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
2. Web服务器配置
Apache配置示例(虚拟主机)
php
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 自定义错误页面
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
</VirtualHost>
Nginx配置示例
bash
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
三、IDE和工具配置
推荐的开发工具:
- Visual Studio Code(免费) 扩展:PHP Intelephense、PHP Debug、PHP Server
bash
// settings.json 配置
{
"php.validate.executablePath": "C:/php/php.exe",
"php.debug.executablePath": "C:/php/php.exe"
}
PHP 伪协议详解
一、概述
PHP伪协议(PHP Wrappers)是PHP提供的用于访问各种资源的统一接口,通过fopen()、file_get_contents()等函数配合特定协议前缀来使用。
最常用的5个伪协议
1. php://filter ★★★★★(最常用)
用于数据流过滤处理,在文件包含、读取源码时经常使用。
php
<?php
// 读取PHP文件源码(Base64编码形式,防止直接执行)
$source = file_get_contents('php://filter/read=convert.base64-encode/resource=index.php');
echo "Base64编码的源码:" . $source;
// 解码查看实际内容
// echo base64_decode($source);
?>
2. php://input ★★★★☆
获取原始的POST数据,常用于API接收JSON/XML数据。
php
<?php
// 接收JSON格式的POST数据
$json_data = file_get_contents('php://input');
$data = json_decode($json_data, true);
print_r($data);
// 使用方式:curl -X POST -d '{"name":"张三","age":25}' http://localhost/api.php
?>
3. file:// ★★★☆☆
访问本地文件系统,是默认协议。
php
<?php
// 读取文本文件内容(可省略file://前缀)
$content = file_get_contents('file:///etc/passwd');
echo $content;
// Windows系统
// $content = file_get_contents('file://C:/Windows/win.ini');
?>
4. data:// ★★☆☆☆
直接嵌入数据,常用于测试和小型数据存储。
php
<?php
// 直接使用数据流,无需外部文件
$content = file_get_contents('data:text/plain;base64,SGVsbG8gV29ybGQ=');
echo $content; // 输出:Hello World
// SGVsbG8gV29ybGQ= 是 "Hello World" 的Base64编码
?>
5. http:// 和 https:// ★★★☆☆
访问HTTP资源。
php
<?php
// 获取网页HTML内容
$html = file_get_contents('http://www.example.com');
echo substr($html, 0, 200) . "..."; // 只显示前200个字符
// 注意:需要 allow_url_fopen = On
?>
php://filter - 开发调试、安全审计必用
php://input - API开发、数据接收必用
data:// - 快速测试、数据嵌入常用
安全第一原则:
-
永远不要相信用户输入
-
禁用
allow_url_include -
使用白名单验证文件路径
-
生产环境严格限制协议使用