PHP配置,PHP模块安装

来源:互联网 发布:中国联通软件开发待遇 编辑:程序博客网 时间:2024/05/17 21:42

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

php.ini文件基本配置

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

<?phpphpinfo();?>

用这种方式可以找到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  //值设为onlog_errors //值设为/tmp/php_errors.logerror_reporting  //值设为E_ALL & E_NOTICEdisplay_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.ccluster_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:         20160303Zend Module Api No:      20160303Zend Extension Api No:   320160303[root@cent01 phpredis-develop]# ls  //configure文件出现了acinclude.m4       common.h      COPYING            library.c         package.xml         redis_cluster.c   serialize.listaclocal.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 installInstalling 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]bz2ctyperedis//各种设置完成后,重启httpd就可以使用了[root@cent01 phpredis-develop]# /usr/local/apache2.4/bin/apachectl restart
原创粉丝点击