php环境配置与伪协议

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

    • 安装步骤:

      1. 下载对应版本

      2. 运行安装程序

      3. 选择安装目录(避免中文路径)

      4. 启动控制面板

      5. 点击Apache和MySQL的Start按钮

  • WampServer支持多PHP版本切换

  • PHPStudy(中文版)

    • 更适合国内用户
2.手动安装
  1. 下载PHP

    powershell

    复制代码
    # 访问官网下载
    # 选择Thread Safe版本(用于Apache)
    # 解压到文件架(C:/php)
  2. 配置PHP

    ini

    复制代码
    ; 编辑 php.ini-development 重命名为 php.ini
    ; 启用常用扩展(去掉分号)
    extension=mysqli
    extension=pdo_mysql
    extension=curl
    extension=gd
    extension=mbstring
    extension=openssl
  3. 配置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和工具配置

推荐的开发工具:

  1. 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

  • 使用白名单验证文件路径

  • 生产环境严格限制协议使用

相关推荐
IMPYLH2 小时前
Lua 的 Table 模块
开发语言·笔记·后端·junit·游戏引擎·lua
一个处女座的程序猿O(∩_∩)O2 小时前
深入剖析Java线程生命周期:从创建到销毁的全流程详解
java·开发语言
许同2 小时前
JS-WPS 自动化办公(3)数据整理-找数据
开发语言·javascript·wps
Fairy要carry2 小时前
面试:LLM-分词
开发语言·c#
项目題供诗2 小时前
C语言基础(七)
c语言·开发语言
Albert Edison2 小时前
【ProtoBuf】初识 protobuf
java·开发语言·protobuf
zh_xuan3 小时前
kotlin 尾随Lambda表达式函数的常用简写
开发语言·kotlin
沐知全栈开发10 小时前
Perl 数据库连接
开发语言
森叶10 小时前
Java 比 Python 高性能的原因:重点在高并发方面
java·开发语言·python