백엔드 개발 PHP 튜토리얼 PHP学习研究:PHP.INI配置文件漫游_PHP

PHP学习研究:PHP.INI配置文件漫游_PHP

Jun 01, 2016 pm 12:38 PM
php 변하기 쉬운 할 수 있다 공부하다 문서 로밍 연구 설정 구성

  一般来说你不需要改变PHP设置,它根据默认的配置通常就能很好的工作。但作为PHP设计者的开发人员们考虑到用户可能偶尔需要针对特定应用程序对PHP语言的一些功能进行调整。因此,他们将一些PHP变量通过名为php.ini的配置文件显示出来。此配置文件允许用户调整PHP多项功能,包括设置文件路径以及目录、改变会话以及数据库参数,以及激活扩展选项(activating extensions)等。

  在开始我们的介绍之前,我们将对PHP配置文件的组织方式进行简要的说明。文件命名为php.ini的原因之一就是它遵循许多Windows应用程序中INI文件的常见结构。它是一个ASCII文本文件,并且被分成几个不同名称的部分,每一部分包括与之相关的各种变量。每一部分类似于如下结构:

  [MySection]

  variable="value"

  anothervariable="anothervalue"

  各部分的名称通过方括号括起来放在顶部,然后将是一对对任意数量的“变量名——值”,每一对占单独一行。同常规的PHP代码要求一样,变量名区分大小写且不能包含空格,变量的值可以是数字、字符串,或者布朗型(Boolean)。

  每一行如果以分号开头则表明该行是注释语句。这也使得允许或禁止PHP功能变得非常简单。你只需要将相关语句注释而无需删除,该语句就不会被系统解析。特别是当你希望在一段时间以后重新打开某种功能的时候特别方便,因为你不需要在配置文件中将此行删除。

  为了便于PHP识别,php.ini文件必须要么放在当前目录,要么放在$PHPRC环境变量所定义的目录中,或者是在编译时所指定的目录(对Windows PHP来说即Windows主目录)。

  在通过修改php.ini文件改变PHP配置之后,需要重启Web服务器以使配置改变生效(当然这是在通过Web服务器使用PHP的情况下)。对于PHP命令行使用模式,每次只要涉及到PHP二进制程序的时候系统都会读取配置文件。

  这是配置文件漫游的第一站也是非常重要的一站:语言解释程序相关选项。第一行是引擎变量,它将控制PHP引擎是“on”还是“off”。关闭引擎则意味着嵌入的PHP代码将不会被Web服务器所解析。通常将其关闭是毫无意义的,所以保持开启状态。

   
 
engine = On

  short_open_tag则控制解析器是否识别简写的标志,即将其等价为标准标志。如果预计简写标志会和别的语言产生冲突,或者希望对PHP代码采用严格的语法规则,那么可以将其关闭。

  short_open_tag = On

  通常而言,在PHP脚本中的会话、cookie或者HTTP文件头数据必须在脚本产生任何输出之前发送出去。如果在你的应用程序中不可能实现,你可以通过允许PHP称之为output buffering功能来达到这一目的,此功能通过output_buffering变量进行控制。

  如果打开output buffering,PHP将把脚本产生的运行结果存放在特殊的内存缓冲区域内,并在得到明确指示时才将其发送出去。通过这样的方式,你甚至可以在脚本中部或者脚本尾部发送特殊的HTTP文件头以及cookie数据。当然,这样会造成脚本运行性能一定程度的下降。

  output_buffering = Off

  你还可以为output_buffering变量赋值以指定缓冲区域大小,例如:

  output_buffering = 2048

  当PHP启动的时候,它将在Web服务器标准头信息中添加PHP版本号信息。如果希望关闭此功能,可以将expose_php设置为false。这项功能非常有用,例如,可以在Web服务器上屏蔽此信息以防范潜在的黑客攻击。

  expose_php = On

  现在来看看如何设置查找路径以及差错控制。

  可以通过include_path变量设置PHP查找路径。它允许包括一系列目录。在相关文件调用缺少指定路径的情况下,PHP将自动检查这些目录。

  如果有频繁使用的函数库或类,也可以将其位置写在这里以方便查找。这也是一个很好的添加PHP的PEAR目录路径的地方,此路径将包括很多可重用的类。

  include_path = ".:/usr/local/lib/php/pear:"

  Windows用户可以通过分号分割路径名来指定多路径;UNIX用户则需要使用冒号。

  另外两个有趣的变量是auto_prepend_file以及auto_append_file。这些变量指定PHP自动添加到任何PHP文档文件头或文件尾的其他文件。这对于为PHP产生的页面添加页眉或页脚非常有用,可以节省为每个PHP文档添加代码的时间。但需要注意这里的指定文件将会添加到所有的PHP文档中,所以这些变量必须适合单应用程序(single-application)的服务器。

  所包含的文件要么是PHP脚本,要么是普通的HTML文档。嵌入式PHP代码必须用标准标记括起来。

  auto_prepend_file = /home/web/includes/header.php

  auto_append_file = /home/web/includes/legal.php

  PHP的差错可以分为四类:解析错误、关于代码小问题的提示(notice)(例如变量未初始化)、警告(除了非致命错误),以及致命错误(fatal errors)。通常而言,当PHP遇到除第二种(关于代码小问题的提示)以外的错误时,将显示错误信息,并且如果属于致命错误则会立即停止代码处理。你可以通过修改error_reporting变量来对此功能进行修改。此变量可以接收一比特位的错误代码,且只显示同这些代码相同的错误。

  error_reporting = E_ALL

  要关闭显示所有错误——在产品代码中通常建议这么做——可以将display_errors变量设置为false,并使用log_errors变量将信息写入错误日志(error log)。

  此举可以提高系统的安全性能——通过关闭错误显示,你可以将系统的特定信息隐藏起来,恶意用户就无法利用这些信息试图入侵站点或应用程序。但你应当通过将error_log变量指定为文件名或特殊值“syslog”,从而将这些错误信息写入到自定义日志文件或者系统日志中。请记住定期检查这些文件,以知道在应用程序内部到底发生了什么。

  display_errors = Off

  log_errors = On

  error_log = "error.log"

  PHP可以使用很多不同的扩展选项。在UNIX系统中,扩展选项需要在编译时创建;而对于Windows,二进制DLL文件将随PHP发布而将自己包括进去。变量extension_dir包括了PHP应当查看相关扩展选项的目录名。

  extension_dir = "C:\Program Files\Internet Tools\Apache\bin\php4\extensions"

  Windows下的PHP包括了20种不同的扩展选项,并且全部都列在了php.ini文件中(通过注释)。要激活某个特定的扩展选项只需要将相应行首的分号去掉并重启服务器就可以了。如果要禁用某个扩展选项(比如在需要提升系统性能的情况下),只需要在行首重新添加分号。

  如果扩展选项没有列在php.ini文件中,可以使用变量extension,然后将相应DLL文件名传递给此变量。

  extension=php_domxml.dll

  extension=php_dbase.dll

  设置extension-specific变量
变量extension-specific被存放在配置文件中一个单独的区域。比如,所有同MySQL扩展功能相关的变量都应当存储在php.ini中的[MySQL]区域。

  如果需要使用PHP的mail()函数,则需要设置以下三个变量。当通过PHP mail()函数发送电子邮件信息时需要使用SMTP以及变量sendmail_from(Windows系统)或变量sendmail_path(UNIX系统)。对于Windows,这些变量设置了所用到的SMTP服务器以及显示在电子邮件信息中的“From:”地址;而对于UNIX,变量sendmail_path则对邮件传输设置了MTA(邮件传输代理,mail transfer agent)的路径。

  SMTP = myserver.localnet.com

  sendmail_from = me@localhost.com

  sendmail_path = /usr/sbin/sendmail

  变量java.class.path、java.home、java.library以及java.library.path全部用来设置查找Java类以及库的路径。这些值将被Java扩展所使用,所以如果希望PHP能正确的同Java程序进行集成,则必须确保这些变量被正确的设置。

  java.class.path = .\php_java.jar

  java.home = c:\jdk

  java.library = c:\jdk\jre\bin\hotspot\jvm.dll

  java.library.path= .\

  变量session.save_path指定了保存会话信息所需的临时目录。通常而言,此目录默认为/tmp,但由于在Windows系统中此默认目录并不存在,所以你必须将其重新设置为正确的Windows临时目录,否则会话处理程序将会在调用session_start()函数时弹出讨厌的出错信息。同时可以通过变量session.cookie_lifetime来控制会话cookie的有效期。

  session.save_path = c:\windows\temp

  session.cookie_lifetime = 1800

  在php.ini中,有很多同PHP安装的安全问题相关的变量。其中最有趣的是safe_mode变量,建议针对ISP以及共享主机服务(shared-hosting services)对其进行设置,此变量将对用户对PHP的使用范围进行限制。
 
safe_mode = Off

  当safe mode打开的时候,可以通过变量safe_mode_include_dir指定在何目录中查找相关文件。通过将二进制程序放在特定目录并使用safe_mode_include_dir变量将目录告之PHP,PHP将对可使用exec()命令运行PHP脚本的程序种类进行限制。在此目录中仅二进制文件可以通过exec()命令进行访问。

  safe_mode_include_dir = /usr/local/lib/php/safe-include

  safe_mode_exec_dir = /usr/local/lib/php/safe-bin

  还可以通过变量open_basedir来限制文件操作。此变量将设置作为文件操作根(root)的目录名。此变量设置后,对于PHP来说,存放在此目录树以外的文件将无法访问。这对于在共享系统中将用户限制在各自的home或者Web目录是一种很好的方法。

  open_basedir = /home/web/

  变量max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增加,以避免PHP在脚本正在执行某些重要过程的时候将脚本关闭。

  max_execution_time = 90

  刚提到了上传,现在来看看如何配置uploads变量以及form变量。

  如果我们在文章前面所讨论安全配置所提供的安全强度还不能满足你的要求,可以通过关闭文件上传或设置每次上传最大文件尺寸限制来进一步提高安全强度。以上两种功能将分别通过变量file_uploads和upload_max_filesize来实现。通常来说,除非系统中有为接收文件而设计的应用程序(例如基于Web FTP服务的图片册),你应当设置一个相对较小的文件尺寸限制值。

  file_uploads = On

  upload_max_filesize = 2M

  如果你对于上传文件并不关心,但在PHP应用程序中使用了大量的表单,这里有两个变量将会让你产生很大的兴趣。首先是变量register_globals,它解决了PHP开发人员长期以来的心头之痛。在PHP 3.x中,此变量默认为On。由此当提交表单时表单变量将自动的转换成PHP变量。

  在PHP 4.x中,出于安全考虑,此变量默认设置为Off。由此,表单变量将只能通过特定的$_GET以及$_POST进行访问。这也造成了很多用PHP 3.x编写的脚本在运行时出现问题,要求开发人员重写脚本并对其重新测试。比如,输入到表单域中的值对于PHP 3.x脚本来说将可以理解为$email;而在PHP 4.x脚本中却被作为$_POST['email']或者$_GET['email']。

  通常情况下可以将此变量设置为Off,这样可以对通过表单进行的脚本攻击提供更为安全的防范措施。如果需要考虑到对早期PHP 3.x脚本的兼容问题,则应当置于On。

  register_globals = Off

  同表单提交相关的一个变量是post_max_size,它将控制在采用POST方法进行一次表单提交中PHP所能够接收的最大数据量。似乎不大可能需要将默认的8 MB改得更大。相反,应当适当将其降到更为实际的数值。但如果希望使用PHP文件上传功能,则需要将此值改为比upload_max_filesize还要大。

  post_max_size = 8M

  在PHP 5中增加了max_input_time变量。此变量可以以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间。

  max_input_time = 90

  你还可以通过调整一些变量值来提升PHP解析器的性能。为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量:

  memory_limit = 8M

  变量memory_limit的值应当适当大于post_max_size的值。

  另一项可以用于提高性能的方法是禁用变量$argc以及$argv,这两个值被用于存放在命令行中传递给应用程序的参数数量以及实际参数值。

  register_argc_argv = false

  类似,还可以禁用$HTTP_GET_VARS以及$HTTP_POST_VARS,因为在使用$_GET以及$_POST的今天你不大可能用到前两种方式。禁用此功能可以带来性能上的提升,但这只能通过PHP 5中的变量register_long_arrays实现。

  register_long_arrays = false

  函数ini_set()

  最后,需要注意ini_set()函数。当PHP读取php.ini配置文件中的所有设置信息的同时,它还提供了采用ini_set()函数根据per-script原则更改这些设置的功能。此函数接收两个参数:需要调整的配置变量名,以及变量的新值。例如,在某脚本出现时增加最大执行时间(maximum execution time):

  

  ini_set('max_execution_time', 600)

  // more code

  ?>

  这样的设置将仅仅影响被设置的脚本。一旦脚本执行完毕,该变量将自动恢复到原始值。

  如果PHP应用程序运行在一个共享服务器上,你不大可能可以访问到主php.ini配置文件。这时,函数ini_set()就可以允许根据特殊要求对PHP配置做动态修改,这将会给你带来很大的方便。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

이전에 몰랐던 후회되는 PHP 함수 7가지 이전에 몰랐던 후회되는 PHP 함수 7가지 Nov 13, 2024 am 09:42 AM

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. Apr 05, 2025 am 12:04 AM

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? Feb 07, 2025 am 11:57 AM

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

문자열로 모음을 계산하는 PHP 프로그램 문자열로 모음을 계산하는 PHP 프로그램 Feb 07, 2025 pm 12:12 PM

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

PHP에서 늦은 정적 결합을 설명하십시오 (정적 : :). PHP에서 늦은 정적 결합을 설명하십시오 (정적 : :). Apr 03, 2025 am 12:04 AM

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

php magic 방법 (__construct, __destruct, __call, __get, __set 등)이란 무엇이며 사용 사례를 제공합니까? php magic 방법 (__construct, __destruct, __call, __get, __set 등)이란 무엇이며 사용 사례를 제공합니까? Apr 03, 2025 am 12:03 AM

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.

See all articles