”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何启用/禁用 PHP 本机功能 – php.ini 教程

如何启用/禁用 PHP 本机功能 – php.ini 教程

发布于2024-11-02
浏览:970

在本文中,我想向您介绍通过编辑 php.ini 文件中的“disable_functions”指令来启用或禁用 php 本机函数的分步过程。

有时需要自定义服务器上的默认 PHP 配置,以适应系统与生产环境的兼容性。

为什么这个教程

我是 Inspector.dev 的作者,Laravel 和 Symfony 的实时监控包。该包使用 pro_open 和 proc_close php 本机函数来异步执行从服务器到 Inspector API 的数据传输。

它也可以配置为使用默认启用的 PHP 原生 CURL 函数,但在这种情况下,它会像其他软件包(如 Sentry、Bugsnag 等)一样以同步方式将监控数据发送到 Inspector。意味着您的应用程序可能会变慢一点,因为 php 引擎需要等待才能结束与客户端的连接。

最近一些开发人员联系我,因为他们的 php 配置中禁用了 proc_open 和 proc_close 函数,因此他们需要解锁它们才能利用异步数据发送。

这种情况非常罕见,但我决定编写本教程作为此用例的支持资源。

php.ini 文件是什么

php.ini 文件是 PHP 的配置文件。该文件包含称为“指令”的键/值对列表。指令分为几个部分,尽管这些主要用于组织目的。

当 PHP 启动时,它会读取该文件并设置内部数据结构来存储配置。在整个执行过程中,PHP 会参考这些内部数据结构来确定它在许多关键领域的行为方式,例如:错误处理和日志记录、资源限制(内存、执行时间)、文件上传、数据库连接等等。

对于也想知道的人:即使没有 php.ini 文件,PHP 也可以工作,它只会将默认值应用于所有指令。

对于不熟悉的人,这里是 php.ini 文件的示例:

https://github.com/php/php-src/blob/master/php.ini-product

启用/禁用 php.ini 中的功能

编辑 php.ini 文件,我们可以禁用本机 PHP 函数,您将无法在 PHP 代码中调用这些函数。

有时,此功能用于限制共享托管环境中某些功能的使用,因为错误使用这些功能可能会给其他用户带来安全问题。像 exec() 这样的函数通常被禁用,但有时服务器提供商过于保守,可能会禁用日常编程任务所需的函数。

找到 php.ini 文件

在计算机的终端中运行以下命令以获取文件的当前位置(适用于 Win 和 Unix):

php --ini

常用位置:/etc/php.ini、/etc/php/8.x/php.ini(将 x 替换为您安装的版本号)

要在服务器上编辑文件,我更喜欢使用任何 Unix 机器上都可用的 vim 编辑器。

// Use the file path from the command above
sudo vim /etc/php.ini

向下滚动到“disable_functions”指令。它应该位于文件的前半部分,并包含以逗号分隔的函数列表。

disable_functions=exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

编辑 php.ini 文件

  • 按键盘上的字母“i”进入 vim 的 INSERT 模式。
  • 从列表中删除 proc_open 和 proc_close 函数。
  • 完成文件编辑后,按 ESC 键。这将使您退出 INSERT 模式,并且“– INSERT –”将从终端左下角消失。
  • 要保存文件,请输入“:wq”,这是写入和退出指令。

重新启动 PHP 引擎

要加载新配置,您需要重新启动 PHP。下面的说明应该适用于大多数服务器。您最终可以在 Google 上搜索特定操作系统。

// Change the version of the PHP with what is in use in your machine
sudo systemctl restart php8.2-fpm.service

更多技术文章,您可以在 Linkedin 或 X 上关注我。

免费监控您的 PHP 应用程序

Inspector是专门为软件开发人员设计的代码执行监控工具。您无需在服务器级别安装任何内容,只需安装 LaravelSymfony 软件包即可开始。

如果您正在寻找 HTTP 监控、数据库查询见解以及将警报和通知转发到您首选消息传递环境的功能,请免费尝试 Inspector。注册您的帐户。

或者在网站上了解更多信息:https://inspector.dev

How to enable/disable PHP native functions – php.ini Tutorial

版本声明 本文转载于:https://dev.to/inspector/how-to-enabledisable-php-native-functions-phpini-tutorial-kpg?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在 Docker 容器上设置 Redmine
    在 Docker 容器上设置 Redmine
    Redmine 是一个灵活的开源项目管理和问题跟踪 Web 应用程序。它广泛用于管理项目、跟踪错误以及处理任务和截止日期。 Redmine 使用 Ruby on Rails 开发,具有高度可定制性,支持广泛的团队协作和项目组织功能。 Redmine 因其灵活性、定制性和开源特性而成为商业项目管理工具...
    编程 发布于2024-11-09
  • 哪种 HTML5 Reset CSS 提供最全面的覆盖范围?
    哪种 HTML5 Reset CSS 提供最全面的覆盖范围?
    哪种 HTML5 Reset CSS 提供广泛的覆盖范围?大量的浏览器版本给网页设计带来了挑战,需要使用重置CSS 确保跨平台的样式一致。然而,鉴于可用选项过多,选择正确的重置 CSS 可能会令人畏惧。html5reset.org 拥有全面的覆盖范围,不仅包括重置填充和边距,还包括解决图像的潜在问题...
    编程 发布于2024-11-09
  • 棘手的 Golang 面试问题 - 部分数据竞赛
    棘手的 Golang 面试问题 - 部分数据竞赛
    Here is another code review interview question for you. This question is more advanced than the previous ones and is targeted toward a more senior aud...
    编程 发布于2024-11-09
  • 如何在 Python 中按列值对散点图进行颜色编码?
    如何在 Python 中按列值对散点图进行颜色编码?
    Python 中按列值对散点图进行颜色编码在数据可视化中,为不同类别分配颜色可以增强清晰度并揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我们如何使用 pandas 和 matplotlib 在 Python 中实现相同的功能?更新:Seaborn 增强功能Since 原始答案,Se...
    编程 发布于2024-11-09
  • 如何将日期转换为数字格式以进行绘图?
    如何将日期转换为数字格式以进行绘图?
    将日期转换为数字格式以进行绘图当日期以不同格式存储时,根据日期绘制数据可能具有挑战性,例如“1991 年 1 月 2 日。”本文提供了一种将日期转换为可以轻松在 x 轴上绘制的数字格式的解决方案。如问题中所述,使用 strftime('%Y%m%d') 转换日期仅靠这一点可能还不够。...
    编程 发布于2024-11-09
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-09
  • 如何使用 JavaScript 在 Android 浏览器中可靠地检测设备旋转?
    如何使用 JavaScript 在 Android 浏览器中可靠地检测设备旋转?
    使用 JavaScript 检测 Android 浏览器中的设备旋转检测旋转的兼容性挑战使用 JavaScript 检测设备旋转与具有明确定义方法的 iPhone 相比,Android 手机上的浏览器可能更具挑战性。 Android 设备上的行为可能不一致,事件的顺序和频率以及 screen.wid...
    编程 发布于2024-11-09
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-09
  • 在 JavaScript 中缓存数组长度比直接长度访问更快吗?
    在 JavaScript 中缓存数组长度比直接长度访问更快吗?
    优化 JavaScript 中的数组迭代:缓存长度与直接长度访问循环数组是 JavaScript 中的基本操作。但最快的方法是什么?传统观点认为,缓存数组的长度可以通过避免重复计算来提高性能。然而,一些人认为现代编译器优化了直接长度访问。争论:缓存与直接访问传统上,推荐的方法是缓存数组长度: for...
    编程 发布于2024-11-09
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为的主要场景bool:语句:if、whi...
    编程 发布于2024-11-09
  • 如何使用纯 JavaScript 切换元素类?
    如何使用纯 JavaScript 切换元素类?
    使用纯 JavaScript 切换元素类:综合指南简介在 JavaScript 中,控制元素类对于动态 Web 开发至关重要。一项常见任务是切换类以更改元素的外观或功能。虽然 jQuery 使这项任务变得简单,但了解如何使用纯 JavaScript 来完成它是至关重要的。jQuery 解决方案和 J...
    编程 发布于2024-11-09
  • 如何使用 Base64 对 OpenSearch 插件的图像进行编码?
    如何使用 Base64 对 OpenSearch 插件的图像进行编码?
    为 OpenSearch 插件编码图像为 Firefox 或 IE 等浏览器开发 OpenSearch 插件时,base64 编码对于表示图像至关重要。具体实现方法如下:方法一:在线编码访问在线文件编码网站,例如[Base64 Encode](https:// /www.base64encode.o...
    编程 发布于2024-11-09
  • 使用 Java 的 JarOutputStream 创建 JAR 文件时如何避免意外问题?
    使用 Java 的 JarOutputStream 创建 JAR 文件时如何避免意外问题?
    对 JAR 文件创建的 JarOutputStream 进行故障排除使用 java.util.jar.JarOutputStream 以编程方式创建 JAR 文件看起来很简单,但某些细微差别可能会导致意外问题。本文探讨了这些未记录的怪癖,并提供了用于创建有效 JAR 文件的全面解决方案。了解怪癖使用...
    编程 发布于2024-11-09
  • 如何在不中断内容流的情况下将 Div 绝对放置在右侧:解决 Float:right 与 Position:absolute 的困境
    如何在不中断内容流的情况下将 Div 绝对放置在右侧:解决 Float:right 与 Position:absolute 的困境
    右浮动和绝对定位困境已解决在您追求一个 div 能够无缝地将其自身与其父级右侧对齐,同时避免干扰其他内容,您偶然发现了一个障碍: float:right 和 float:right 的冲突行为position:absolute.Float 和 Absolute 的冲突性质Float:right 通过...
    编程 发布于2024-11-09
  • 如何在不修改 http.ResponseWriter 的情况下记录 HTTP 响应?
    如何在不修改 http.ResponseWriter 的情况下记录 HTTP 响应?
    在 http.HandleFunc 中记录 HTTP 响应本文讨论了一种获取 HTTP 响应以进行日志记录的替代方法,而无需诉诸伪造请求或修改 http.ResponseWriter。我们引入了中间件链接的概念,提供了函数式实现。中间件链接中间件链接涉及将控制权传递给处理程序链,这些处理程序在主请求...
    编程 发布于2024-11-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3