PHP配置,PHP模块安装

本文介绍了如何配置PHP的php.ini文件,包括设置时区、禁用危险函数、配置错误日志等。此外还讲解了如何通过修改配置文件限制网站根目录以增强安全性,并演示了如何安装PHP扩展模块如redis。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

11.30-11.32 PHP配置,PHP模块安装

php.ini文件基本配置

可以写一个页面,内容如下:

<?php
phpinfo();
?>

用这种方式可以找到php.ini文件应该放置的位置。也可以看到其是否已经加载。然后到php的src中寻找配置文件复制到此目录。

Configuration File (php.ini) Path   /usr/local/php7/etc //查找其应该所在的位置
Loaded Configuration File   /usr/local/php7/etc/php.ini 
[root@cent01 php-7.1.6]# cp /usr/local/src//php-7.1.6/php.ini-development /usr/local/php7/etc/php.ini  //复制php.ini文件到其应该在的位置

[root@cent01 php-7.1.6]# vim /usr/local/php7/etc/php.ini //编辑配置文件

timezone=Asia/Shanghai  //设置时区
disable_functions=eval,assert,popen,passthru,escapeshellarg //设置关闭一些函数,escapeshellcmd,passthru,exec,system,chroot,
scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,
stream_socket_server,popen,proc_open,proc_close 

//有些公司也会一起关闭phpinfo函数,因为这条函数会暴露系统的信息带来一定风险

error_log  //值设为on
log_errors //值设为/tmp/php_errors.log
error_reporting  //值设为E_ALL & E_NOTICE
display_errors  // 值设为off,因为这条信息是显示在客户端浏览器上的。这会暴露系统信息

[root@cent01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t
[root@cent01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful //重新加载配置文件

[root@cent01 php-7.1.6]# cat /tmp/php_errors.log  //查看错误日志
[13-Nov-2017 22:25:05 Asia/Shanghai] PHP Warning:  phpinfo() has been disabled for security reasons in /data/wwwroot/111.com/1.php on line 2
[13-Nov-2017 22:30:15 Asia/Shanghai] PHP Parse error:  syntax error, unexpected end of file in /data/wwwroot/111.com/2.php on line 4
[13-Nov-2017 22:30:20 Asia/Shanghai] PHP Parse error:  syntax error, unexpected end of file in /data/wwwroot/111.com/2.php on line 4

open_basedir
有时候会在一个服务器上跑多个网站,为了确保一个网站被黑时不会导致另一个网站也被黑,这时可以用open_basedir设置来管理。

虽然可以在php.ini文件中设置,但是在这里设备并不适用于一台服务器上有多个网站时。所以还有更好的方法是在httpd-vhost文件上进行设置。

//在php.ini文件中设置

[root@cent01 php-7.1.6]# vim /usr/local/php7/etc/php.ini //编辑配置文件
open_basedir =/data/wwwroot/111.com/:/tmp/  //两个目录用:隔开

[root@cent01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t
[root@cent01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful //重新加载配置文件
//在httpd-vhost文件中设置
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"

    php_admin_value open_basedir "/data/wwwroot/111.com/:/tmp/"  //语句为php_admin_value

    CustomLog "logs/abc.com-access_log" combined
</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com  111.com

    php_admin_value open_basedir "/data/wwwroot/111.com/:/tmp/"
    ErrorLog "logs/111.com-error_log"
    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400 " combined
</VirtualHost>

php动态模块安装

php一旦编译完成后,如果想添加新的模块,要么重新编译php,要么编译一个扩展模块(so文件),然后在php.ini中配置一下,就可以被加载使用了。

/usr/local/php/bin/php -m //查看已经加载了哪些模块

举例安装php redis模块:

[root@cent01 php-7.1.6]# cd /usr/local/src
[root@cent01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
[root@cent01 src]# mv develop phpredis-develop.zip
[root@cent01 src]# unzip phpredis-develop.zip 
[root@cent01 src]# cd phpredis-develop/
[root@cent01 phpredis-develop]# ls  //没有看到configure文件
arrays.markdown    config.m4   debian             library.h         README.markdown     redis.c           redis_session.c
cluster_library.c  config.w32  debian.control     m

[root@cent01 phpredis-develop]# yum install -y autoconf
[root@cent01 phpredis-develop]# /usr/local/php7/bin/phpize  //用php自带的phpize生成configure文件
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
[root@cent01 phpredis-develop]# ls  //configure文件出现了
acinclude.m4       common.h      COPYING            library.c         package.xml         redis_cluster.c   serialize.list
aclocal.m4         config.guess  crc16.h            library.h         php_redis.h         redis_cluster.h   tests  configure  


[root@cent01 phpredis-develop]# ./configure --with-php-config=/usr/local/php7/bin/php-config  //编译

[root@cent01 phpredis-develop]# make&&make install

Installing shared extensions:   //显示生成的redis.so文件的存放目录
     /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

[root@cent01 phpredis-develop]# ls   //确实有redis.so文件/usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so  redis.so

[root@cent01 phpredis-develop]# vim /usr/local/php7/etc/php.ini //编辑配置文件,搜索extension,添加extension=redis.so

[root@cent01 phpredis-develop]# /usr/local/php7/bin/php -m //可以看到redis.so已经被调用了
[PHP Modules]
bz2
ctype
redis

//各种设置完成后,重启httpd就可以使用了
[root@cent01 phpredis-develop]# /usr/local/apache2.4/bin/apachectl restart






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值