如何在 OpenSUSE 15.2 / 15.1 上安装 PHP
在 OpenSUSE 15.1/15.2 上安装 PHP 的先决条件
最好从安装 Nginx Web 服务器开始本教程。但是,首先使用 CLI 更新 OpenSUSE Linux 软件和内核:
接下来打开终端应用程序,然后键入以下 zypper 命令来安装 Nginx,因为它是 PHP 所需的:有关更多信息,
请参阅如何在 OpenSUSE Linux 服务器上安装和使用 Nginx 。
$ sudo zypper ref
$ sudo zypper up
$ sudo zypper install nginx
# enable and turn on Nginx for PHP #
$ sudo systemctl enable nginx.service
$ sudo systemctl start nginx.service
在 OpenSUSE 上为 Nginx 安装 PHP
通过输入以下命令列出 OpenSUSE 上可用的所有 PHP 7.4 软件包:
$ sudo zypper search php7
Reading installed packages... S | Name | Summary | Type --+------------------+-----------------------------------------------------------+-------- | apache2-mod_php7 | PHP7 module for the Apache 2.x webserver | package | php7 | Interpreter for the PHP scripting language version 7 | package | php7-APCu | APCu - APC User Cache | package | php7-bcmath | "Binary Calculator" extension for PHP | package | php7-bz2 | bzip2 codec support for PHP | package | php7-calendar | PHP7 Extension Module | package | php7-ctype | Character class extension for PHP | package | php7-curl | libcurl integration for PHP | package | php7-dba | Database abstraction layer for PHP | package | php7-devel | PHP7 development files for C/C++ extensions | package | php7-dom | Document Object Model extension for PHP | package | php7-embed | Embedded SAPI Library | package | php7-enchant | Spell checking extension for PHP | package .... .. .... | php7-xsl | PHP7 Extension Module | package | php7-zip | ZIP archive support for PHP | package | php7-zlib | Zlib compression support for PHP | package | uwsgi-php7 | PHP7 Plugin for uWSGI | package
让我们安装 php7-fpm 和 php7 包,运行:
$ sudo zypper install php7-fpm php7
验证 PHP 版本
类型:
$ php -v # CLI version
$ php-fpm -v # FastCGI process manager for Nginx
PHP 7.4.6 (fpm-fcgi) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
启用 PHP FastCGI 服务
您需要使用 systemctl 命令:
$ sudo systemctl enable php-fpm.service
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service
如何使用 Nginx 配置 PHP
让我们使用 cd 命令和cp 命令来设置配置文件
$ cd /etc/php7/fpm/
$ sudo cp -v php-fpm.conf.default php-fpm.conf
'php-fpm.conf.default' -> 'php-fpm.conf'
使用文本编辑器(如nano命令/vim命令)编辑php-fpm.conf文件:
$ sudo vi php-fpm.conf
为主进程设置打开文件描述符rlimit:
; The default 1024 is too low: rlimit_files = 20000
在 vim 中保存并关闭文件。接下来,我们将设置一个名为 www 的新池,如下所示:
$ cd /etc/php7/fpm/php-fpm.d
$ sudo cp -v www.conf.default www.conf
'www.conf.default' -> 'www.conf'
编辑 www.conf,运行:
$ sudo vi www.conf
运行 php-fpm 所需的进程的 Unix 用户/组:
user = nginx group = nginx
启用 PHP错误日志记录到名为 php-scripts.log 的文件中:
php_flag[display_errors] = off php_admin_value[error_log] = /var/log/nginx/php-scripts.log php_admin_flag[log_errors] = on
出于安全原因,设置 PHP 脚本的资源和内存限制:
; set default value php_admin_value[memory_limit] = 128M
在 OpenSUSE 15.2 上启动 PHP FastCGI 服务
$ sudo systemctl start php-fpm.service
上述命令将在 127.0.0.1:9000 启动 php-fpm。这是接受 FastCGI 请求的地址,我们将配置 Nginx。
在 OpenSUSE Linux 上停止 PHP FastCGI 服务
$ sudo systemctl stop php-fpm.service
在 OpenSUSE 上重新启动 PHP FastCGI 服务
$ sudo systemctl restart php-fpm.service
检查 PHP FPM 服务的状态
$ sudo systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2020-07-15 15:53:47 UTC; 6s ago Main PID: 3001 (php-fpm) Status: "Ready to handle connections" Tasks: 3 CGroup: /system.slice/php-fpm.service ├─3001 php-fpm: master process (/etc/php7/fpm/php-fpm.conf) ├─3002 php-fpm: pool www └─3003 php-fpm: pool www Jul 15 15:53:47 example-opensuse systemd[1]: Starting The PHP FastCGI Process Manager... Jul 15 15:53:47 example-opensuse systemd[1]: Started The PHP FastCGI Process Manager.
Nginx 和 PHP 配置
编辑 nginx.conf 或您的虚拟主机域文件如下:
$ sudo vi /etc/nginx/vhosts.d/www.example.com.conf
更新 Nginx 服务器块如下:
# PHP config # location ~ \.php$ { # 404 try_files $fastcgi_script_name =404; # default fastcgi_params include /etc/nginx/fastcgi_params; # fastcgi settings fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; # fastcgi params fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; }
保存并关闭文件。重新启动/重新加载 php-fpm 服务:
$ sudo systemctl restart php-fpm.service
搜索 PHP 扩展
按照如下方式使用 zypper 和grep 命令:
$ sudo zypper search php7
# find module starting with 'm' #
$ sudo zypper search php7-m\*
$ sudo zypper search php7 | grep mysql
安装 PHP 扩展
我们可以按如下方式安装 PHP 的 MySQL 数据库客户端:
$ sudo zypper install php7-mysql
PHP 的 GD 图形库扩展:
$ sudo zypper install php7-gd
典型的 WordPress 和 MediaWiki 安装需要以下模块:
$ sudo zypper install php7-gd php7-json php7-opcache php7-readline php7-redis php7-exif php7-gettext php7-zlib php7-imagick php7-iconv php7-ctype php7-curl php7-intl php7-mbstring php7-pdo php7-mysql php7-fileinfo php7-openssl php7-zip php7-dom
测试 PHP
在您的 DocumentRoot 中创建一个新脚本(由 nginx 中的 root 设置)。例如:
$ vi /home/example.com/http/test.php
附加以下 PHP 配置:
<?php // phpinfo() - Show information about PHP's configuration on OpenSUSE Linux 15.2 phpinfo(); // Show just the PHP authors/credit information. // phpinfo(INFO_CREDITS); // See php.net/phpinfo ?>
运行如下:
https://your-domain/test.php
https://www.example.com/test.php
结论
您学习了如何在 OpenSUSE Linux 15.2/15.1 服务器上安装和测试 PHP 7.4。有关更多信息,请参阅以下资源:
- Linux 25 PHP 安全系统管理员的最佳实践。
- PHP.INI设置禁用 exec、shell_exec、system、popen 等函数以提高安全性。
- 请参阅此处的 Nginx文档、此处的 OpenSUSE wiki和此处的 PHP文档。
- 在 OpenSUSE Linux Enterprise Server 上安装和使用 Nginx
- 在 OpenSUSE Linux 上使用 Let's Encrypt 保护 Nginx
- 在 OpenSUSE Linux 15.2/15.1 上安装 PHP