CentOS 7上为PHP5安装suPHP的方法(彭哥)

作者:彭哥 时间:2024-03-24 23:34:12 

CentOS 7上PHP默认是以apache或者nobody的身份运行的,这种方式下由于PHP运行需要的权限比较大,会有安全隐患,还可能会受到服务器其他用户影响。

通过phpinfo查看PHP信息如下:

CentOS 7上为PHP5安装suPHP的方法(彭哥)

apache运行php

可以看出来,PHP目前是作为Apache的一部分在运行,而不会为每个脚本运行一个独立进程。如果希望PHP脚本运行时是以当前用户的身份而不是Apache,可以通过部署suPHP来实现。接下来介绍如何在CentOS 7上安装suPHP。

先配置安装suphp所需的环境:

yum -y groupinstall 'Development Tools'
yum -y install apr-devel
yum -y install httpd-devel

下载suphp安装包:

mkdir temp
cd temp
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz

下载并安装suphp补丁:

wget -O patchingsuphp.patch https://www.webhostinghero.com/downloads/php/suphp.patch
patch -Np1 -d suphp-0.7.2 < patchingsuphp.patch
cd suphp-0.7.2
autoreconf -if

运行./configure:

./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr

/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner

--with-logfile=/var/log/httpd/suphp_log

编译并安装:

make
make install

在Apache配置目录下创建suphp.conf

vi /etc/httpd/conf.d/suphp.conf

并写入:

LoadModule suphp_module modules/mod_suphp.so

/etc目录下创建suphp.conf配置文件:

vi /etc/suphp.conf

并写入配置文件内容如下:

[global]
;Path to logfile
logfile=/var/log/httpd/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=apache
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0077
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100

[handlers]
;Handler for php-scripts
x-httpd-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi="execute:!self"

如果希望domainname这个目录以用户user身份运行,那么修改目录所有者属性为user,如下:

chown -R [user].[user] /var/www/html/[domainname]

最后在Apache配置文件中找到相应域名,并开启suphp:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler None
</FilesMatch>
<IfModule mod_suphp.c>
suPHP_Engine on
<FilesMatch "\.php[345]?$">
SetHandler x-httpd-suphp
</FilesMatch>
suPHP_AddHandler x-httpd-suphp
</IfModule>

最后重启Apache文件。通过info.php测试可以发现运行该域名的Server API已经由Apache变成CGI/FastCGI了,如下图所示:

CentOS 7上为PHP5安装suPHP的方法(彭哥)

到这里我们即完成了CentOS为某个域名访问设置通过suphp的方式来运行,而不用默认的Apache Handler运行。其他域名需要设置,按照以上步骤操作一遍即可。

来源:https://www.urbansh.com/centos-7-install-suphp.html

标签:CentOS,suPHP
0
投稿

猜你喜欢

  • Go语言 go程释放操作(退出/销毁)

    2023-09-17 22:03:42
  • Python爬虫利用多线程爬取 LOL 高清壁纸

    2023-02-10 15:07:25
  • 如何由Sybase向SQL Server移植数据库

    2009-01-20 15:56:00
  • 全面解读Python Web开发框架Django

    2022-06-24 19:41:45
  • Python并发concurrent.futures和asyncio实例

    2023-07-27 06:15:13
  • 基于go手动写个转发代理服务的代码实现

    2024-04-25 15:11:15
  • vue动态禁用控件绑定disable的例子

    2024-05-09 15:08:14
  • Pytorch保存模型用于测试和用于继续训练的区别详解

    2021-12-02 08:49:39
  • python实现自动登录后台管理系统

    2021-05-26 13:40:48
  • 基于vue-resource jsonp跨域问题的解决方法

    2023-07-02 16:33:44
  • SQL 查询性能优化 解决书签查找

    2012-10-07 10:23:56
  • Python代码块及缓存机制原理详解

    2023-07-02 08:12:07
  • 在element-ui的select下拉框加上滚动加载

    2024-04-17 10:04:14
  • 如何修改MySQL密码(方法大总结)

    2009-11-18 11:07:00
  • 详解go语言单链表及其常用方法的实现

    2024-02-21 03:13:41
  • python数据可视化Seaborn画热力图

    2022-01-17 22:55:05
  • python变量不能以数字打头详解

    2022-06-30 15:33:48
  • python client使用http post 到server端的代码

    2021-09-03 14:33:54
  • 微信小程序开发之获取用户手机号码(php接口解密)

    2023-11-15 03:34:59
  • Go语言基本的语法和内置数据类型初探

    2024-05-28 15:24:09
  • asp之家 网络编程 m.aspxhome.com