In diesem Artikel möchte ich Ihnen Schritt für Schritt die Vorgehensweise zum Aktivieren oder Deaktivieren nativer PHP-Funktionen erläutern, indem Sie die Direktive „disable_functions“ in der Datei php.ini bearbeiten.
Manchmal muss die Standard-PHP-Konfiguration auf Ihrem Server angepasst werden, um die Kompatibilität Ihres Systems mit der Produktionsumgebung zu gewährleisten.
Ich bin der Autor von Inspector.dev, dem Echtzeit-Überwachungspaket für Laravel und Symfony. Dieses Paket verwendet die nativen PHP-Funktionen pro_open und proc_close, um die Datenübertragung von Ihrem Server zur Inspector-API asynchron durchzuführen.
Es kann auch so konfiguriert werden, dass die nativen CURL-Funktionen von PHP verwendet werden, die standardmäßig aktiviert sind. In diesem Fall werden die Überwachungsdaten jedoch synchron an Inspector gesendet, wie dies bei anderen Paketen wie Sentry, Bugsnag usw. der Fall ist bedeutet, dass Ihre Anwendung etwas langsamer werden könnte, da die PHP-Engine warten muss, bevor sie die Verbindung mit dem Client beendet.
Kürzlich haben mich einige Entwickler kontaktiert, weil die Funktionen proc_open und proc_close in ihrer PHP-Konfiguration deaktiviert waren, sodass sie sie entsperren müssen, um die Vorteile des asynchronen Datenversands nutzen zu können.
Es kommt ziemlich selten vor, aber ich habe beschlossen, dieses Tutorial als Support-Ressource für diesen Anwendungsfall zu schreiben.
Die Datei php.ini ist DIE Konfigurationsdatei für PHP. Die Datei enthält eine Liste von Schlüssel/Wert-Paaren, die als „Anweisungen“ bezeichnet werden. Richtlinien sind in Abschnitte gruppiert, die jedoch hauptsächlich organisatorischen Zwecken dienen.
Wenn PHP startet, liest es diese Datei und richtet interne Datenstrukturen ein, um die Konfiguration zu speichern. Während der gesamten Ausführung bezieht sich PHP auf diese internen Datenstrukturen, um zu bestimmen, wie es sich in vielen Schlüsselbereichen verhalten soll, wie zum Beispiel: Fehlerbehandlung und -protokollierung, Ressourcenbeschränkungen (Speicher, Ausführungszeit), Datei-Uploads, Datenbankverbindungen und mehr.
Für jemanden, der sich auch fragt: PHP kann auch dann funktionieren, wenn keine php.ini-Datei vorhanden ist, es wendet einfach die Standardwerte auf alle Anweisungen an.
Für diejenigen, die damit nicht vertraut sind, hier ein Beispiel einer php.ini-Datei:
https://github.com/php/php-src/blob/master/php.ini-produktion
Durch Bearbeiten der php.ini-Datei können wir native PHP-Funktionen deaktivieren, die Sie in Ihrem PHP-Code nicht aufrufen können.
Manchmal wird diese Funktion verwendet, um die Nutzung einiger Funktionen in Shared-Hosting-Umgebungen einzuschränken, da eine falsche Verwendung dieser Funktionen zu Sicherheitsproblemen für andere Benutzer führen kann. Funktionen wie exec() sind normalerweise deaktiviert, aber manchmal sind Serveranbieter zu konservativ und können Funktionen deaktivieren, die für alltägliche Programmieraufgaben benötigt werden.
Führen Sie den folgenden Befehl im Terminal Ihres Computers aus, um den aktuellen Speicherort der Datei abzurufen (funktioniert sowohl für Win als auch für Unix):
php --ini
Gemeinsame Speicherorte: /etc/php.ini, /etc/php/8.x/php.ini (ersetzen Sie x durch die Versionsnummer Ihrer Installation)
Um Dateien auf dem Server zu bearbeiten, bevorzuge ich den vim-Editor, der auf jedem Unix-Rechner verfügbar sein sollte.
// Use the file path from the command above sudo vim /etc/php.ini
Scrollen Sie nach unten zur Direktive „disable_functions“. Es sollte sich in der ersten Hälfte der Datei befinden und eine durch Komma getrennte Liste von Funktionen enthalten.
disable_functions=exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Um die neuen Konfigurationen zu laden, müssen Sie PHP neu starten. Die folgende Anleitung sollte auf den meisten Servern funktionieren. Sie können eventuell bei Google nach einem bestimmten Betriebssystem suchen.
// Change the version of the PHP with what is in use in your machine sudo systemctl restart php8.2-fpm.service
Für weitere technische Artikel können Sie mir auf Linkedin oder X folgen.
Inspector ist ein Tool zur Codeausführungsüberwachung, das speziell für Softwareentwickler entwickelt wurde. Sie müssen nichts auf Serverebene installieren, installieren Sie einfach das Paket Laravel oder Symfony und schon kann es losgehen.
Wenn Sie nach HTTP-Überwachung, Einblicken in Datenbankabfragen und der Möglichkeit suchen, Warnungen und Benachrichtigungen an Ihre bevorzugte Messaging-Umgebung weiterzuleiten, testen Sie Inspector kostenlos. Registrieren Sie Ihr Konto.
Oder erfahren Sie mehr auf der Website: https://inspector.dev
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3