PHP相关配置

1.查找php配置文件/usr/local/php/bin/php -i或者phpinfo()

  1. [root@bogon admin]# /usr/local/php/bin/php -i|grep -i "loaded configuration file"
  2. PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
    In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now,
    but please set date.timezone to select your timezone. in Unknown on line 0
  3. Loaded Configuration File => /usr/local/php/etc/php.ini
  4. [root@bogon admin]#

2.如果没有配置文件需要将源码包中的php配置文件拷贝进来

  1. cp -r /usr/local/src/php-5.6.30/php.ini-production /usr/local/php/etc/php.ini

3.disable_functions 安全函数(禁止掉这些比较危险的函数)

在生产环境中会把phpinfo禁掉。因为有时候不小心写了一个phpinfo文件,上传上去被黑客发现。能够看到系统的目录。不安全
eval:一句话木马使用了该函数如果把这个函数禁了,即使上传了木马也没办法解析

  1. [root@bogon 111.com]# vim /usr/local/php/etc/php.ini
  2. [root@bogon 111.com]#

4.date.timezone //定义时区

  1. date.timezone =Asia/shanghai

5.display_errors = On //会把错误信息直接显示在浏览器上改成Off(生产环境该参数改成Off,为了避免暴露信息)但是有一个问题,就是页面什么都不显示(白页)。那么还需要配置错误日志。

log_errors = On //表示错误日志打开状态

6.error_log = /tmp/php_errors.log //定义错误日志所在位置

7.error_reporting //定义日志的级别,还需要定义error_log的级别。如果级别很高的话,很严谨的话,只会记录一些比较严峻的错误,不太严峻的就不记录,比如警告等、所以放松些

生产环境使用
E_ALL & ~E_NOTICE (Show all errors, except for notices)

模拟:把phpinfo函数禁掉。
1.phpinfo放入disable_functions里
2.display_errors = Off
3.log_errors = On
4.error_log = /tmp/php_errors.log
5./usr/local/apache2.4/bin/apachectl -t && graceful
6.ll /tmp/

7.cat /tmp/php_errors.log

  1. [11-Dec-2017 21:23:49 Asia/shanghai] PHP Warning: phpinfo() has been disabled for security reasons in /data/wwwroot/discuz2/lsx/1.php on line 2

php_errors.log的属主实际是httpd的属主daemon。因为这个日志是以daemon这个进程的身份创建的。当你定义了一个日志,但是日志始终没有生成,就要看一下定义的目录有没写权限,而且写文件的进程是这个进程。

为了保守起见,可以把这个文件创建好/tmp/php_errors.log,在授权777权限

  1. [root@bogon 111.com]# touch /tmp/php_errors.log; chmod 777 /tmp/php_errors.log

  

  1. [root@bogon 111.com]# grep error_log /usr/local/php/etc/php.ini
  2. ; server-specific log, STDERR, or a location specified by the error_log
  3. ; Set maximum length of log_errors. In error_log information about the source is
  4. ;error_log = php_errors.log
  5. ;error_log = syslog
  6. ; OPcache error_log file name. Empty string assumes "stderr".
  7. ;opcache.error_log=
  8. [root@bogon 111.com]#

open_basedir 将php所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开。

1.在php.ini 加入

open_basedir="指定目录"

2.在程序中使用

ini_set('open_basedir', '指定目录');

改php.ini有个问题,假如有多个虚拟主机这样做是不可行的,可以在虚拟主机配置文件中配置

3.httpd.conf中的VritualHost

php_admin_value open_basedir "指定目录"

  1. <VirtualHost *:80>
  2. ServerAdmin webmaster@dummy-host.example.com
  3. DocumentRoot "/data/wwwroot/abc.com"
  4. ServerName abc.com
  5. ServerAlias www.abc.com www.123.com
  6. php_admin_value open_basedir "/data/wwwroot/abc.com:/tmp/"
  7. ErrorLog "logs/abc.com-error_log"
  8. CustomLog "logs/abc.com-access_log" common
  9. </VirtualHost>
  1. [root@bogon tmp]# /usr/local/apache2.4/bin/apachectl graceful [root@bogon tmp]#
  2. [root@bogon tmp]# !curl
  3. curl -x127.0.0.1:80 http://111.com -I
  4. HTTP/1.1 200 OK
  5. Date: Wed, 07 Feb 2018 06:05:58 GMT
  6. Server: Apache/2.4.28 (Unix) PHP/5.6.30
  7. X-Powered-By: PHP/5.6.30
  8. Cache-Control: max-age=0
  9. Expires: Wed, 07 Feb 2018 06:05:58 GMT
  10. Content-Type: text/html; charset=UTF-8
  11.  
  12. [root@bogon tmp]#

PHP扩展模块安装

http://blog.sina.com.cn/s/blog_3dbab2840100uo5l.html

1.php编译后想增加模块怎么办,下面娓娓道来,以增加redis模块为例

  1. https://codeload.github.com/phpredis/phpredis/zip/develop

2.解压phpredis包

  1. [root@bogon src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
  1. [root@bogon src]# mv develop phpredis-develop.zip
    [root@bogon src]# unzip phpredis-develop.zip

3.使用phpize命令生成./configure文件,报错autoconf not find,需要安装autoconf包

  1. [root@bogon src]# cd phpredis-develop/
  2. [root@bogon phpredis-develop]# /usr/local/php
  3. php/ php7/
  4. [root@bogon phpredis-develop]# /usr/local/php/bin/phpize
  5. Configuring for:
  6. PHP Api Version: 20131106
  7. Zend Module Api No: 20131226
  8. Zend Extension Api No: 220131226
  9. Cannot find autoconf. Please check your autoconf installation and the
  10. $PHP_AUTOCONF environment variable. Then, rerun this script.
  11.  
  12. [root@bogon phpredis-develop]# yum install -y autoconf

4.再次执行命令成功

  1. [root@bogon phpredis-develop]# /usr/local/php/bin/phpize
  2. Configuring for:
  3. PHP Api Version: 20131106
  4. Zend Module Api No: 20131226
  5. Zend Extension Api No: 220131226
  6. [root@bogon phpredis-develop]#

5.编译

  1. [root@bogon phpredis-develop]# ./configure --with-php-config=/usr/local/php/bin/php-config

6.make && make install 生成redis.so模块

  1. [root@bogon phpredis-develop]# make install
  2. Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
  3. [root@bogon phpredis-develop]# ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
  4. opcache.so redis.so
  5. [root@bogon phpredis-develop]#

7.查看php支持的全部扩展模块

  1. [root@bogon phpredis-develop]# /usr/local/php/bin/php -m|grep redis

8.查看下php的扩展模块放在哪里,默认存放路径不用改。

  1. [root@bogon phpredis-develop]# /usr/local/php/bin/php -i |grep -i extension_dir
  2. extension_dir => /usr/local/php/lib/php/extensions/no-debug-zts-20131226 => /usr/local/php/lib/php/extensions/no-debug-zts-20131226
  3. sqlite3.extension_dir => no value => no value
  4. [root@bogon phpredis-develop]#

9.将redis.so模块添加到php.ini配置文件中

  1. [root@bogon phpredis-develop]# vim /usr/local/php/etc/php.ini

10.加载成功

  1. [root@bogon phpredis-develop]# /usr/local/php/bin/php -m |grep redis
  2. redis
  3. [root@bogon phpredis-develop]#

11.编译的php本身自带的模块(php源码包中ext文件夹下的)zip

  1. [root@bogon /]# cd /usr/local/src/php-5.6.30/ext/
  2. [root@bogon ext]# ls
  3. bcmath ext_skel intl opcache pgsql soap xml
  4. bz2 ext_skel_win32.php json openssl phar sockets xmlreader
  5. calendar fileinfo ldap pcntl posix spl xmlrpc
  6. com_dotnet filter libxml pcre pspell sqlite3 xmlwriter
  7. ctype ftp mbstring pdo readline standard xsl
  8. curl gd mcrypt pdo_dblib recode sybase_ct zip
  9. date gettext mssql pdo_firebird reflection sysvmsg zlib
  10. dba gmp mysql pdo_mysql session sysvsem
  11. dom hash mysqli pdo_oci shmop sysvshm
  12. enchant iconv mysqlnd pdo_odbc simplexml tidy
  13. ereg imap oci8 pdo_pgsql skeleton tokenizer
  14. exif interbase odbc pdo_sqlite snmp wddx
  15. [root@bogon ext]#
  1. [root@bogon ext]# /usr/local/php/bin/php -m |grep zip #查看是否有zip模块
  2. [root@bogon ext]# cd zip/
  3. [root@bogon zip]# ls
  4. config.m4 CREDITS lib php_zip.c tests zip_stream.c
  5. config.w32 examples LICENSE_libzip php_zip.h TODO
  6. [root@bogon zip]# /usr/local/php/bin/phpize
  7. Configuring for:
  8. PHP Api Version: 20131106
  9. Zend Module Api No: 20131226
  10. Zend Extension Api No: 220131226
  11. [root@bogon zip]#
  1. [root@bogon zip]# ./configure --with-php-config=/usr/local/php/bin/php-config
  1. [root@bogon zip]# ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
  2. opcache.so redis.so zip.so
  3. [root@bogon zip]#

LAMP架构三的更多相关文章

  1. LAMP架构(三)

    第十九课 LAMP架构(三) 目录 一.配置防盗链 二.访问控制Directory 三.访问控制FilesMatch 四.限定某个目录禁止解析php 五.限制user_agent 六.php相关配置 ...

  2. Apache web服务器(LAMP架构)(week3_day4)--技术流ken

    apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http:/ ...

  3. 末学者笔记--apache编译安装及LAMP架构上线

    apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...

  4. Apache web服务器(LAMP架构)

    Apache web服务器(LAMP架构) apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 ...

  5. LAMP架构(二)

    第十八次课 LAMP架构(二) 目录 一.Apache默认虚拟主机 二.Apache用户认证 三.域名跳转 四.Apache访问日志 五.访问日志不记录静态文件 六.访问日志切割 七.静态元素过期时间 ...

  6. LAMP架构上(一)

    第十七课LAMP架构上(一) 目录 一.LAMP架构介绍 二.MySQL.MariaDB介绍 三.MySQL安装 四.MariaDB安装 五.Apache安装 六.安装PHP5 七.安装PHP7 八. ...

  7. 部署LAMP架构及其应用

    部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ...

  8. LAMP架构应用实战—Apache服务介绍与安装01

    LAMP架构应用实战—Apache服务介绍与安装01   一:Apache是什么 Apache是Apache基金会开发的一个高性能.功能强大.安全可靠.灵活的开放源码的WEB服务软件 二:Apache ...

  9. LAMP架构的搭建

    什么是LAMP架构? L : Linux,2.6.18-308.el5(redhat5.8) A :Apache,httpd 2.4.4 M :  mysql-5.5.28  P : php-5.4. ...

随机推荐

  1. 找出最小元素的下标 Exercise07_10

    import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:找出最小元素的下标 * */ public class Exercise0 ...

  2. Problem E: 调用函数,整数逆序输出

    #include<stdio.h> int reverse(int number)//定义函数 { ;//result用于储存结果 ) { result=result*; i=number ...

  3. Mysql客户端下载地址

    官网:http://dev.mysql.com/downloads/mysql/   上述千万不要下载免安装版本. 千万记住一定要下载MSI安装版本.

  4. OpenShift蓝绿及灰度部署

    内容转自https://blog.csdn.net/jj_tyro/article/details/80136316, 并不断补充,感谢作者. 1.蓝绿部署 蓝绿部署实现的是全流量切换,适合于在测试完 ...

  5. maven本地仓库地址的设置

    对于大公司的jenkins来说,仓库是很大的,那么存储仓库的目录空间一定要足够大才可以. 可以对linux进行外挂,实现磁盘扩容,把仓库挂在外挂上. 默认情况下,mvn的配置文件在~/.m2/sett ...

  6. Clone()方法C#

    class DrawBase:System.Object , ICloneable { public string name = "jmj"; public DrawBase() ...

  7. Net编程 详解DataTable用法【转】

    http://www.diybloghome.com/article/16.html DataTable表示一个与内存有关的数据表,可以使用工具栏里面的控件拖放来创建和使用,也可以在编写程序过程中根据 ...

  8. Jquery事件冒泡

    事件冒泡 什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么 ...

  9. Python和Flask真强大:不能错过的15篇技术热文(转载)

    Python和Flask真强大:不能错过的15篇技术热文 本文精选了 Python开发者 11月份的15篇 Python 热文.其中有基础知识,机器学习,爬虫项目实战等. 注:以下文章,点击标题即可阅 ...

  10. java 注解(自身理解)

    声明注解 使用注解 解析注解 产生的结果 注解利用的是反射机制 ============================================================= 使用注解修饰 ...