PHPer 高手之路
  • Introduction
  • First Chapter
  • 基础
    • 数据类型和常量
    • 字符串
      • 字符编码
      • 字符编码相关编程
    • 引用变量
    • 运算符与错误控制符@
    • 流程控制与条件判断
      • foreach遍历中的引用
    • 函数
    • 文件及目录处理
  • PHP 数组
    • 基础
    • PHP数组操作
    • 输入流 php://input
    • PHP数组的内部实现
    • PHP数组和数据结构
    • 示例技巧
  • PHP文件编程
    • 文件系统
    • 基础
    • 实例技巧
    • PHP中XML处理
    • PHP中JSON处理
    • PHP中CSV处理
    • 大文件上传
  • 正则表达式
    • 基础
    • 正则的引擎
    • 表达式的优化
    • PHP中正则的使用
  • PHP 编码技巧
    • PHP编码习惯
    • PHP语法糖
    • PHP代码优化
    • PHP重点新特性
    • PHP编码规范
  • PHP选项和运行原理
    • PHP SAPI
    • PHP运行模式及安装方式
    • 附录:进程和线程的Q解
    • Apache下的MPM模式
    • Apache 与 Nginx
    • PHP的运行机制及原理
    • PHP垃圾回收机制
    • PHP配置选项
  • PHP安全
    • 跨站脚本攻击(XSS )
    • 跨站请求伪造(CRSF)
  • PHP 高级特性
    • 异常处理(Exceptions)
    • 代码复用(Trait)
    • 预定义接口(Predefined Interfaces)
    • 魔术方法(Magic Methods)
    • 回调函数、匿名函数&闭包
    • 命名空间(Namespaces)
    • 自动加载(Autoload)
    • 反射(Reflection)
    • 魔术常量(Magic constants)
    • 综合实例
  • 附录:关键词
  • 附录:资料
  • 代码的版本控制
    • SVN
    • Git
      • 疑难杂症
  • Linux
    • Linux原理与基础
    • 常见命令
    • Shell 编程
    • awk 与 sed
    • 命令笔记
  • HTTP 协议
    • 请求方法与返回状态码
    • Cookie、Session 的原理
  • MySQL
    • MySQL表存储引擎
  • 标准PHP库(SPL)
    • 数据结构
      • SplPriorityQueue - 优先队列
      • SplQueue - 队列
      • SplStack - 栈的功能
    • 接口
      • Countable - count统计接口
  • 附录:ElasticSearch
  • PHP数据结构
  • 附录:Rabbitmq
  • 附录:guzzle
  • JavaScript
    • 附录:资料
  • 疑难杂症
Powered by GitBook
On this page

Was this helpful?

  1. PHP选项和运行原理

PHP配置选项

PHP选项之“display_errors”

该选项设置是否将错误信息作为输出的一部分显示到屏幕,或者对用户隐藏而不显示。

设置 "stderr" 表示发送到 stderr 而不是 stdout。 "stderr"从 PHP 5.2.4 开始可用。在以前的版本中,该配置值的类型为 boolean.

这是一个辅助开发的功能,建议永远不要在生产系统中使用 (例如系统被连接到互联网对外提供服务)。

尽管 display_errors 也可以在运行时设置 (使用 ini_set()), 但是脚本出现致命错误时任何运行时的设置都是无效的。 因为在这种情况下预期运行的操作不会被执行。

// 开发时
error_reporting(E_ALL);
ini_set('display_errors', true);

PHP选项之“error_reporting”

设置错误报告的级别。该参数可以是一个任意的表示二进制位字段的整数,或者常数名称。错误级别和常数是在 预定义常量定义的,在 php.ini 之中也有专门的说明。

可以通过 error_reporting() 函数进行设置。

在PHP 4和PHP 5之中,其默认值为 E_ALL & ~E_NOTICE。 该设置表示除了 E_NOTICE 其他都显示的错误级别。在开发过程中很有必要显示它们。

PHP选项之“magic_quotes_gpc”

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。 当 magic_quotes 为 on,所有的 ' (单引号)、" (双引号)、\(反斜杠)和 NUL's 被一个反斜杠自动转义。

PHP选项之“magic_quotes_runtime”

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

如果启用了 magic_quotes_runtime,大多数返回任何形式外部数据的函数,包括数据库和文本段将会用反斜线转义引号。 如果启用了 magic_quotes_sybase,单引号会被单引号转义而不是反斜线。

受 magic_quotes_runtime 影响的函数(不包括 PECL 里的函数): file_get_contents()、file()、fgets()、fwrite()、fread()

PHP选项之“variables_order”

设置EGPCS (Environment, Get, Post, Cookie, and Server)超全局变量解析的顺序。例如,如果这个选项被设置为 “SP” ,那么PHP将创建 超级全局变量 $_SERVER 、 $_POST, 但是不会创建 $_ENV, $_GET, 和 $_COOKIE。设置为空表示不创建任何超全局变量。

PHP选项之“request_order”

确定$_GET和$_POST的等超全局变量的顺序,后面的会把前面的数据重写覆盖。

例如: request_order = "GP“

如果post请求同时有get的参数,那么post的数据会把get的参数覆盖。

PHP选项之“safe_mode”

PHP 的安全模式是为了试图解决共享服务器(shared-server)安全问题而设立的。在结构上,试图在 PHP 层上解决这个问题是不合理的,但修改 web 服务器层和操作系统层显得非常不现实。因此许多人,特别是 ISP,目前使用安全模式。

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

PHP选项之“open_basedir”

将 PHP 所能打开的文件限制在指定的目录树,包括文件本身。本指令不受安全模式打开或者关闭的影响。

当一个脚本试图用例如 fopen() 或者 gzopen() 打开一个文件时,该文件的位置将被检查。当文件在指定的目录树之外时 PHP 将拒绝打开它。所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。

PHP选项之“disable_classes 、disable_functions”

“disable_classes”指令可以使你出于安全的理由禁用某些类。用逗号分隔类名。disable_classes 不受安全模式的影响。

“disable_functions”指令允许你基于安全原因禁止某些函数。接受逗号分隔的函数名列表作为参数。 disable_functions 不受安全模式的影响。

PHP选项之“ expose_php ”

“决定是否暴露 PHP 被安装在服务器上(例如在 Web 服务器的信息头中加上其签名:X-Powered-By: PHP/5.3.7)。

可以通过这个设置这个为off 关闭掉。

这个参数的默认值是开启的。

PHP选项之“max_input_time 、max_execution_time”

“max_input_time :脚本解析输入数据(类似 POST 和 GET)允许的最大时间,单位是秒。 它从接收所有数据到开始执行脚本进行测量的。

max_execution_time 这设置了脚本被解析器中止之前允许的最大执行时间,单位秒。 这有助于防止写得不好的脚本占尽服务器资源。 默认设置为 30。 从命令行运行 PHP 时,默认设置为 0。

PHP选项之“memory_limit ”

系统分配给PHP的最大内存数量。

可以在PHP代码中动态的修改,int_set(‘memory_limit’,’128M’);

如果设置为“-1” ,表示不限制大小,以实际系统的内存为依据。

PHP选项之“register_globals”

是否把超级全局变量 EGPCS (Environment, GET, POST, Cookie, Server) 里面的数据创建为全局变量。

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

PHP选项之“include_path”

在设置的路径中寻找文件。它会检查第一个路径,如果它没有找到它,检查下一个路径,直到它找到的包含文件或警告或错误回报。您可以使用set_include_path()在运行时修改或设定你的include路径。

Linux的路径用冒号分割

include_path=".:/php/includes"

Windows下的路径用分号分割

include_path=".;c:\php\includes"

PHP选项之“extension_dir”

PHP动态连接扩展库存放的目录,在Linux下,扩展后缀一般”.so”,在Windows下一般都是“.dll”

PHP选项之“upload_tmp_dir”相关upload_tmp_dir

  • upload_max_filesize = 2M

  • file_uploads = On

  • max_file_uploads = 20

  • post_max_size = 8M

PHP选项之“default_socket_timeout ”相关

基于 socket 的流的默认超时时间(秒),默认60秒。

PreviousPHP垃圾回收机制NextPHP安全

Last updated 5 years ago

Was this helpful?