В этой статье я хочу дать вам пошаговую процедуру включения или отключения собственных функций PHP, редактируя директиву «disable_functions» в файле php.ini.
Иногда конфигурацию PHP по умолчанию на вашем сервере необходимо настроить для обеспечения совместимости вашей системы с производственной средой.
Я автор Inspector.dev — пакета мониторинга в реальном времени для Laravel и Symfony. Этот пакет использует встроенные функции PHP pro_open и proc_close для асинхронной передачи данных с вашего сервера в API Inspector.
Его также можно настроить на использование встроенных функций CURL PHP, которые включены по умолчанию, но в этом случае он будет отправлять данные мониторинга в Inspector синхронно, как это делают другие пакеты, такие как Sentry, Bugsnag и т. д. означает, что ваше приложение может немного замедлиться, поскольку движку PHP необходимо подождать, прежде чем завершить соединение с клиентом.
Недавно некоторые разработчики связались со мной, потому что функции proc_open и proc_close были отключены в их конфигурации PHP, поэтому им необходимо разблокировать их, чтобы воспользоваться преимуществами асинхронной отправки данных.
Это довольно редко, но я решил написать это руководство как ресурс поддержки для этого варианта использования.
Файл php.ini — это файл конфигурации PHP. Файл содержит список пар ключ/значение, называемых «директивами». Директивы сгруппированы в разделы, хотя они предназначены в основном для организационных целей.
Когда PHP запускается, он считывает этот файл и настраивает внутренние структуры данных для хранения конфигурации. В ходе выполнения PHP обращается к этим внутренним структурам данных, чтобы определить, как он должен вести себя во многих ключевых областях, таких как: обработка и регистрация ошибок, ограничения ресурсов (память, время выполнения), загрузка файлов, подключения к базе данных и многое другое.
Для тех, кому тоже интересно: PHP может работать, даже если нет файла php.ini, он просто применит значения по умолчанию ко всем директивам.
Для тех, кто с этим не знаком, вот пример файла php.ini:
https://github.com/php/php-src/blob/master/php.ini-production
Редактируя файл php.ini, мы можем отключить встроенные функции PHP, которые вы не сможете вызывать внутри своего PHP-кода.
Иногда эта функция используется для ограничения использования некоторых функций в средах общего хостинга, поскольку неправильное их использование может вызвать проблемы с безопасностью других пользователей. Такие функции, как exec(), обычно отключены, но иногда поставщики серверов слишком консервативны и могут отключить функции, необходимые в повседневных задачах программирования.
Запустите команду ниже на терминале вашего компьютера, чтобы получить текущее местоположение файла (она работает как для Win, так и для Unix):
php --ini
Общие местоположения: /etc/php.ini, /etc/php/8.x/php.ini (замените x номером версии вашей установки)
Для редактирования файлов на сервере я предпочитаю использовать редактор vim, который должен быть доступен на любой машине с Unix.
// 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. Инструкция ниже должна работать на большинстве серверов. В конечном итоге вы можете найти в Google конкретную ОС.
// Change the version of the PHP with what is in use in your machine sudo systemctl restart php8.2-fpm.service
Чтобы увидеть больше технических статей, вы можете подписаться на меня в Linkedin или X.
Инспектор — это инструмент мониторинга выполнения кода, специально разработанный для разработчиков программного обеспечения. Вам не нужно ничего устанавливать на уровне сервера, просто установите пакет Laravel или Symfony и все готово.
Если вам нужен HTTP-мониторинг, анализ запросов к базе данных и возможность пересылать оповещения и уведомления в предпочитаемую вами среду обмена сообщениями, попробуйте Inspector бесплатно. Зарегистрируйте свой аккаунт.
Или узнайте больше на сайте: https://inspector.dev
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3