VPS搭建PHP环境指南
卡尔云官网
www.kaeryun.com
随着互联网的快速发展,VPS(虚拟专用服务器)已经成为现代Web开发和部署的主流方式,对于想自己搭建一个PHP环境的开发者或站长来说,VPS是一个非常理想的选择,PHP是目前最流行的Web语言之一,广泛应用于各种类型的网站,本文将详细讲解如何在VPS上搭建PHP环境,包括安装、配置和安全设置。
VPS的基本配置
在开始搭建PHP环境之前,我们需要确保VPS已经具备基本的Web服务器功能,VPS会预装Apache或者其他Web服务器,如Nginx,如果VPS没有安装PHP,那么第一步就是安装PHP。
安装PHP
安装PHP通常使用Debian/Ubuntu系统中的apt-get命令,假设你的VPS使用Debian系统,可以执行以下命令:
sudo apt-get update sudo apt-get install php7.4
如果VPS使用的是RHEL/CentOS系统,可以使用:
sudo yum install php74
安装完成后,我们可以检查PHP是否安装成功:
sudo php -v
如果显示的是版本号,说明安装成功。
配置PHP
安装PHP后,我们需要配置PHP,使其能够满足我们的需求,配置PHP通常通过修改PHP.ini文件来完成。
找到PHP.ini
PHP.ini文件通常位于VPS的配置目录下,以Debian系统为例,路径如下:
sudo dpkg --print-deps | grep php
这将返回PHP的依赖包,其中包含PHP.ini的安装位置,安装结果可能显示:
PHP: php7.4.198-1+deb10
/usr/share/APL-SoftPHP/7.4.198-1+deb10
PHP.ini的路径可能是:
/usr/share/APL-SoftPHP/7.4.198-1+deb10/php.ini
创建PHP.ini
如果PHP.ini文件不存在,我们可以创建一个空白文件:
sudo nano /path/to/php.ini
以Debian系统为例,可以使用:
sudo nano /usr/share/APL-SoftPHP/7.4.198-1+deb10/php.ini
创建完成后,保存并退出。
编辑PHP.ini
在PHP.ini中,我们需要添加一些配置,以下是常见的配置项:
-
启用PHP服务:
# Enable PHP enable_php = yes
-
设置PHP版本:
# Set PHP version php_version = 7.4
-
设置PHP日志:
# Enable PHP logging log_file = /var/log/php/pi.log log_level = error
-
设置PHP日志大小:
# Log file size limit log_file_size_limit = 10M
-
设置PHP配置文件:
# Set PHP configuration file php_config_file = /etc/php/config
-
设置PHP配置文件路径:
# Set PHP config file path php_dir = /etc/php
-
设置PHP安全提示器:
# Enable PHP security提示器 security_check = enabled security_check_path = /etc/php/security_check security_check_prompt = "Enter password: " security_check_prompt_after = "Password: " security_check_prompt_after_pass = "Continue with password: " security_check_prompt_after_pass_reject = "Password mismatch: " security_check_prompt_after_pass_reject Retry: " security_check_prompt_after_pass_reject Retry again: " security_check_prompt_after_pass_reject Retry third time: " security_check_prompt_after_pass_reject Never mind: " security_check_prompt_after_pass_reject Never mind again: " security_check_prompt_after_pass_reject Never mind third time: " security_check_prompt_after_pass_reject Never mind fourth time: " security_check_prompt_after_pass_reject Never mind fifth time: " security_check_prompt_after_pass_reject Never mind sixth time: " security_check_prompt_after_pass_reject Never mind seventh time: " security_check_prompt_after_pass_reject Never mind eighth time: " security_check_prompt_after_pass_reject Never mind ninth time: " security_check_prompt_after_pass_reject Never mind tenth time: "
保存并退出
保存PHP.ini文件后,退出编辑器,在Debian系统中:
sudo nano /usr/share/APL-SoftPHP/7.4.198-1+deb10/php.ini
启动PHP服务
在VPS的控制面板中,找到Web服务器服务(如Apache或Nginx),确保PHP服务已启用,然后重启服务:
sudo systemctl restart apache2
或者:
sudo systemctl restart php-fpm
检查PHP配置
安装和配置完成后,我们需要验证PHP是否正确配置,可以执行以下命令:
sudo php -r "echo phpversion();"
如果输出是PHP 7.4.198
,说明配置成功。
安全配置
启用安全提示器
在PHP配置中,我们已经启用了安全提示器,我们需要启用PHP安全过滤器:
sudo nano /etc/php/filter/pi.filter
define('filter', function() { return [ 'check' => true, 'check_path' => '/etc/php/old', 'check penetrate' => true, 'check remote' => true, 'check remote_path' => true, 'check_ssi' => true, 'check_xss' => true, 'check_csrf' => true, 'check_xhr' => true, 'check_xurl' => true, 'check_dirless' => true, 'check_dirless_ssi' => true, 'check_dirless_xss' => true, 'check_dirless_xhr' => true, 'check_dirless_xurl' => true, 'check_dirless_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi' => true, 'check_dirless_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi_xhr_xurl_dirless_ssi
卡尔云官网
www.kaeryun.com