zoukankan      html  css  js  c++  java
  • PHP配置

    目录

    1.PHP 的 disable_functions

    2.配置error_log

    3.配置open_basedir

    4.PHP动态扩展模块安装

    PHP配置

    # /usr/local/php/bin/php -i |grep -i "loaded configuration file"    
    PHP Warning:    //一行警告
    Loaded Configuration File => /usr/local/php/etc/php.ini     //PHP配置文件的位置
    php.ini为PHP的配置文件/usr/local/php/etc/php.ini,取消上面的警告,编辑php.ini,找到date.timezone:
    date.timezone = Asia/Shanghai
    再次执行不在提示警告信息

    1.PHP 的 disable_functions

    PHP有很多函数,有一些函数(比如exec)会直接调用Linux系统命令,如果开放会非常危险。

    基于安全考虑拔一下存在安全风险的函数禁掉:

    # vim /usr/local/php/etc/php.ini    //搜索disable_functions
    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
    

    若将来遇到问题记得你曾经禁用了一些函数,这些被禁掉的函数是不能在PHP代码中调用的。更改完php.ini后,由于需要在httpd中调用PHP,所以需要重启htppd服务使其生效。

    2.配置error_log

    设置错误日志

    # vim /usr/local/php/etc/php.ini
    //搜索log_errors,改为
    log_errors = On
    ​
    //搜索error_log
    error_log = /var/log/php/php/errors.log
    ​
    //搜索error_reporting,改为
    error_reporting =E_ALL & ~E_NOTICE  //E_ALL所有类型的日志(提示和警告)&并且~排除notice
    ​
    //搜索display_errors,改
    display_errors = Off
    

    额外操作:

    # mkdir /var/log/php
    # chmod 777 /var/log/php
    # /usrlocal/php/apache2.4/bin/apachectl gracectl

    测试:

    # vim /data/wwwroot/www.abc.com/test.php //写入不完整的代码
    <?php
    echo 111
    # Curl -A "123" -I -x127.0.0.1:80 www.abc.com/test.php
    //500 Internal Server Error
    # cat /var/log/php/php_errors.log
    ...
    //通过日志判断,test.php文件第三行缺少代码

    3.配置open_basedir

    将网站限制在指定的目录里,该站点被黑是不会影响其他站点

    服务器只有一个站点,可直接在php.ini中设置open_basedir参数(只能定义一次)

    # vim /usr/local/php/etc/php.ini
    open_basedir = /tmp:/data/wwwroot/abc.com
    //可以写多个目录,用:分隔

    测试:

    # /usr/local/apache2.4/bin/apachectl graceful
    # cp /usr/local/apache2.4/htdocs/1.php /data/wwwroot/123.com/
    # curl -x127.0.0.1:80 -I 123.com/1.php
    //500 Internal Server error 不能访问
    

    多个站点给单个虚拟主机设置open_basedir,对于php.ini里面的配置,在httpd.conf中也是可以设置的:

    # vim /usr/local/apache2.4/conf/extra/httpd-vhost.conf
    # vim /usr/lcoal/apache2.4/conf/extra/httpd-vhosts.conf
    <VirtualHost *:80>
        DocumentRoot "/data/wwwroot/abc.com"
        ServerName www.abc.com
        ServerAlias abc.com
        CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/abc.com-access_%Y%m%d.log 86400" combined
        php_admin_value open_basedir "/data/wwwroot/abc.com/:/tmp/"
    </VirtualHost>

    //php_admin_value可以定义php.ini里面的参数,除此之外像error_log之类的也可以定义。

    4.PHP动态扩展模块安装

    # /usr/local/php/bin/php -m     //查看模块
    ​
    安装PHP的redis扩展模块
    # cd /usr/local/src
    # wget https://codeload.github.com/phpredis/phpredis/zip/develop
    //若地址失效请到r.aminglinux.com找最新的下载地址
    # mv develop phpredis-develop.zip
    # unzip !$
    # cd phpredis-develop/
    # /usr/local/php/bin/phpize //目的是生成configure文件
    Configuring for:
    PHP Api Version:            20131106
    Zend Module Api No:         20131226
    Zend Extension Api No:      220131226
    Cannot find zutoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.
    //可以看到上面有一个错误cannot find autoconf,这需要安装一些autoconf
    ​
    # yum install -y autoconf
    # /usr/local/php/bin/phpize //再次执行
    # ./configure --with-php-config=/usr/local/php/bin/php-config
    # make
    # make install
    Installing shared extensions:   /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
    // make install的时候会把编译好的redis.so放到这个目录下面,这个目录也是扩展模块存放到目录
    # /usr/local/php/bin/php -i |grep extension_dir //查看扩展模块存放目录,我们可以在                                                  //php.ini中自定义该目录
    # ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226/   
                                                        //可以看到redis.so模
    # vim /usr/local/php/etc/php.ini //增加一行配置(可放到最好)
    extension = redis.so
    # /usr/local/php/bin/php -m |grep redis //查看是否加载了Redis模块
    redis
    

    出处:《跟阿铭学Linux》

    配置若有遗漏或错误,请评论留言。
  • 相关阅读:
    Model1简介
    修改Maven的本地仓库地址
    JavaWeb实现上传文件
    数据库
    集合
    JavaWeb
    Java基础
    Redis 中 redis.conf配置详细解析
    利用Java生成二维码
    利用dom4j读写XML
  • 原文地址:https://www.cnblogs.com/BrokenEaves/p/14426895.html
Copyright © 2011-2022 走看看