」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何啟用/停用 PHP 本機功能 – php.ini 教學課程

如何啟用/停用 PHP 本機功能 – php.ini 教學課程

發佈於2024-11-02
瀏覽:748

在本文中,我想向您介紹透過編輯 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]刪除
最新教學 更多>
  • 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
  • 如何消除 Bootstrap 堆疊行中的間隙:綜合指南
    如何消除 Bootstrap 堆疊行中的間隙:綜合指南
    Bootstrap 堆疊行中的間隙:綜合解決方案Bootstrap 堆疊行中存在間隙對於開發人員來說可能是一個令人沮喪的問題。為了解決這個問題,有幾種有效的解決方案可用。 1。設定元素高度標準化:為所有投資組合元素分配固定高度可確保內容的平均分佈。這消除了不同元素尺寸導致間隙的可能性。 2。使用 M...
    程式設計 發佈於2024-11-09
  • 為什麼使用“shell_exec”從 PHP 調用時我的 Bash 腳本無法執行?
    為什麼使用“shell_exec”從 PHP 調用時我的 Bash 腳本無法執行?
    從PHP 執行Bash 指令:腳本執行失敗故障排除在這個問題中,我們遇到一位PHP 開發人員嘗試使用shell_exec 從PHP 執行bash 腳本。使用的語法為:$output = shell_exec("./script.sh var1 var2");但是,當呼叫指令時腳本...
    程式設計 發佈於2024-11-09
  • 為什麼按鈕不拉伸以用“display: block”和“width: auto”填充容器?
    為什麼按鈕不拉伸以用“display: block”和“width: auto”填充容器?
    為什麼「display: block」和「width: auto」不能拉伸按鈕來填滿容器? 當使用“display: block”和“ width: auto” 在按鈕上,它可能會拉伸並填充其容器。然而,情況並非總是如此。特別是,現代瀏覽器中的按鈕在這方面的行為與其他區塊元素不同。 這種行為背後的原...
    程式設計 發佈於2024-11-09
  • 在 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 原始答案,S...
    程式設計 發佈於2024-11-09
  • 如何將日期轉換為數位格式以進行繪圖?
    如何將日期轉換為數位格式以進行繪圖?
    將日期轉換為數位格式以進行繪圖當日期以不同格式儲存時,根據日期繪製資料可能具有挑戰性,例如「1991 年1 月2 日。」本文提供了一種將日期轉換為可以輕鬆在x 軸上繪製的數位格式的解決方案。 如問題所述,使用 strftime('%Y%m%d') 轉換日期僅靠這一點可能還不夠。若要解...
    程式設計 發佈於2024-11-09
  • 在 JavaScript 中快取數組長度比直接長度存取更快嗎?
    在 JavaScript 中快取數組長度比直接長度存取更快嗎?
    優化 JavaScript 中的陣列迭代:快取長度與直接長度存取循環數組是 JavaScript 中的基本操作。但最快的方法是什麼?傳統觀點認為,快取數組的長度可以透過避免重複計算來提高效能。然而,有些人認為現代編譯器優化了直接長度存取。 爭論:快取與直接存取傳統上,建議的方法是快取陣列長度: f...
    程式設計 發佈於2024-11-09
  • 如何使用純 JavaScript 切換元素類別?
    如何使用純 JavaScript 切換元素類別?
    使用純 JavaScript 切換元素類別:綜合指南簡介在 JavaScript 中,控制元素類別對於動態 Web 開發至關重要。一項常見任務是切換類別以更改元素的外觀或功能。雖然 jQuery 讓這項任務變得簡單,但了解如何使用純 JavaScript 來完成它是至關重要的。 jQuery 解決方...
    程式設計 發佈於2024-11-09
  • 如何使用 Base64 對 OpenSearch 外掛的映像進行編碼?
    如何使用 Base64 對 OpenSearch 外掛的映像進行編碼?
    為 OpenSearch 插件編碼映像為 Firefox 或 IE 等瀏覽器開發 OpenSearch 插件時,base64 編碼對於表示映像至關重要。具體實現方法如下:方法一:線上編碼訪問線上文件編碼網站,例如[Base64 Encode](https:// /www. base64encode....
    程式設計 發佈於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