11.1 LAMP架构介绍
Q:httpd和php为什么需要组合在一起,不能分开部署在不同的节点使用网络来进行数据协同吗?A:因为我们使用的方式是,php作为httpd的一个模块存在的。 他们两者必须要在一起,才能实现效果。当然,如果你把php做成以fastcgi的形式,这样httpd可以在另外的机器上调用它,这样用就跟lnmp类似了。11.2 MYSQL/Maria DB 介绍
环境搭建要搭建3编以上。11.3 MYSQL 安装(上)
11.4 MYSQL 安装(中)11.5 MYSQL 安装(下)课程用到安装包地址:r.aminglinux.com 下载用到的包。《 安装mysql》
1)进入下载目录,并下载包cd /usr/local/src/ 约定以后所有的安装包都安装在这里wget (64位二进制免编译包)。2)解压,并挪动修改目录名字tar zxvf /usr/local/src/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql 3) 进入解压后的目录创建用户和存放数据的目录 cd /usr/local/mysql useradd -s /sbin/nologin mysql mkdir -p /data/mysql 4)初始化安装一下chown -R mysql:mysql /data/mysql chowd -R 755 /usr/local/mysql/data./scripts/mysql_install_db --user=mysql --datadir=/data/mysql echo $? 查安装对不缺少一个dumper的模块,由关键字搜索相关包,实际上如图,安装。<yum list |grep perl |grep -i dumper> 5)拷贝模板配置文件并修改名字和配置cp support-files/my-default.cnf /etc/my.cnf 默认是放在这个下面的这个文件cnf查看文件是由哪个安装的
6)拷贝启动脚本修改名字/修改地址和权限
cp support-files/mysql.server /etc/init.d/mysqldvim /etc/init.d/mysqld #修改basedir 和 datadirchmod 755 /etc/init.d/mysqld 7)将mysql加入系统服务列表里开机启动chkconfig --add mysqld chkconfig --list 查看系统服务也可以用命令启动服务
chkconfig mysqld on service mysqld start 启动mysqlservice mysqld stop 停掉mysqlps aux | grep mysql 查看mysql进程也可以用命令行启动
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
指定配置文件 my.cnf的存放路径,并放到后台启动没有 放到后台 ?????
killall mysqld 杀掉 mysql 会等待mysql数据写完才杀掉 不要用kill -9强制杀掉实验时出错如下:
发现是 my.cnf 配置写成了 /etc/mysql
-------------------------------------------------------------------------------------
11.6 Maria DB 安装
《 安装maria DB》
1)进入下载目录,并下载包cd /usr/local/src/ 约定以后所有的安装包都安装在这里wget (64位二进制免编译包)。2)解压,并挪动修改目录名字tar zxvf /usr/local/src/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb3) 进入解压后的目录创建用户和存放数据的目录 cd /usr/local/mariadb4) 同样使用mysql用户,并用初始化创建 /data/mariadb文件./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb确认/data/mariadb 生成了5)拷贝模板配置文件并修改名字和配置
ls -l /usr/local/mariadb/support-files 查看配置文件模板存放处,有很多个缓存大小不同的配置文件cp support-files/my-small.cnf /usr/local/mariadb/my.cnf 放在另外一处防止与mysql冲突vim /usr/local/mariadb/my.cnf 编辑配置文件 暂不修改6)拷贝模板启动脚本cp support-files/mysql.server /etc/init.d/mariadbvim /etc/init.d/mariadb
更改如下:basedir=/usr/local/mariadbdatadir=/data/mariadbconf=$basedir/my.cnf7)启动
ps aux | grep mysql 确保mysql进程没启动,他们监听的端口一样;/etc/init.d/mariadb start 启动如下有个错误 :--datadir= /data/mysql,,,因为配置文件没有配置,默认使用了mysql的,上面田间
vim /usr/local/mariadb/my.cnf 编辑配置文件
增加:datadir= /data/mariadb 指定datadir,若装了mysql不指定会影响 只在启动脚本里定义是不行的。 修改后重新启动 /etc/init.d/mariadb restart11.6 Apache 安装(上)
《apache 安装》
apache 2.4版本和2.2版本所使用的apr和apr-util版本不一致,所有用手动编译apr和apr-util1)下载下面3个包并解压cd /usr/local/src/ 约定以后所有的安装包都安装在这里wget wget wget tar zvxf httpd-2.4.29.tar.gz tar zvxf apr-1.6.3.tar.gztar jxvf apr-util-1.6.1.tar.bz2缺少bzip2包
yum install -y bzip22) 安装apr --- 安装apr-util
cd /usr/local/src/apr-1.6.3 ./configure --prefix=/usr/local/aprmake && make installcd /usr/local/src/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make && make install 查看生成的目录cd /usr/local/src/httpd-2.4.29
./configure --prefix=/usr/local/apache2.4 \--with-apr=/usr/local/apr \--with-apr-util=/usr/local/apr-util \--enable-so \--enable-mods-shared=mostmake && make install
--enable-so:支持动态扩展模块
--enable-mods-shared=most :支持大部分模块yum install -y zlib*
然后再进入/usr/local/httpd-2.4.3这个目录执行下面的语句:
./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-pcre=/usr/local/pcre/bin/pcre-config --with-zlib-1.2.3=/usr/local/zlib-1.2.3 --enable-so出现了错误 如下:
看命令历史 以下错误
======================
./configure --prefix=/usr/local/apache2.4\--with-apr=/usr/local/apr\--with-apr-util=/usr/local/apr-util\--enable-so\--enable-mods-shared=most 这里 --之间没有空格 指令。=======================
yum list |grep pcre 查相关包
yum install -y pcre-devel.x86_64 安装pcre库包cd /usr/local/apache2.4 进入安装好的apache2.4/usr/local/apache2.4/bin/apachectl -M 查看加载了哪些模块/usr/local/apache2.4/bin/apachectl start 启动ps aux |grep httpd 查看进程11.10 安装 PHP5 (上)
11.11 安装 PHP5 (中)《安装PHP5》
1) 下载并解压cd /usr/local/src/ 约定以后所有的安装包都安装在这里wget tar zxf php-5.6.30.tar.gzcd php-5.6.30 2)编译./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6make && make install
cp php.ini-production /usr/local/php/etc/php.int 配置文件/usr/local/php/etc/php.int -i |less 查看php的信息编译中需要安装多个yum包
1次出错:yum list |grep libxml2 查相关yum包
yum install -y libxml2-devel.x86_64 一般装相关devel库2次又出错:yum install -y libjpeg-devel 安装
3次又出错:yum install -y libpng-devel 安装
4次又出错:mcrypt 在epel中, 若没装过可能需要先安装 yum install -y epel-release
yum list |grep -i mcryptyum install - libmcrypt-devel.x86_6411.12 安装 PHP5 (下)
ls /usr/local/php/ls /usr/local/php/bin 核心二进制文件du -sh /usr/local/php/bin/phpdu -sh /usr/local/apache2.4/modules/libphp5.so/usr/local/php/bin/php -m 查看加载了哪些模块
php 是作为apache的一个扩展模块存在的,不需启动
vim /usr/local/apache2.4/conf/httpd.conf apache的配置文件11.13 安装 PHP7
1)下载并解压
wget tar jxvf php-7.1.6.tar.bz2cd php-7.1.6
2)编译 不同处./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exifmake && make install
同一台机器上可以安装两个php还是要指定好,只能使能一个
du -sh /usr/local/apache2.4/modules/libphp7.so 加载的模块vim /usr/local/apache2.4/conf/httpd.conf 修改配置文件注释掉php5或php7 只能使能一个
11.14 Apache和php结合(上)
11.15 Apache和php结合(下)配置httpd支持php:
vim /usr/local/apache2.4/conf/httpd.conf 需要修改4处找到:1)ServerName 将注释取消掉,没有了上面那个没有定义Servername的警告提示了/usr/local/apache2.4/bin/apachectl restart 重新启动
2)增加一行规则配置,否则不能访问自己IP192.168.188.128打开windows上的telnet的客户端:windows ---个性化--主页--应用--程序和功能--启用或关闭windows功能--打开 Telnet 客户端--确定,,,否则不能使用telnet命令。iptables -nvL 看不到80端口,未打开iptables -I INPUT -p tcp --dport 80 -j ACCEPT 增加一条规则 打开80端口防火墙It works !实际上是访问了 ls /usr/local/apache2.4/htdocs/ 下的index.htmlps aux |grep httpd 确保apche已启动windows 里输入telnet 192.168.188.128 80 ,通了 ctrl +] 退出,,然后输入quit 退出telnet
3) 有时候浏览器会出现403,修改
vim /usr/local/apache2.4/conf/httpd.conf 找到:更改为 Require all granted 保存退出/usr/local/apache2.4/bin/apachectl -t 检查配置文件语法是否正确 (重要)/usr/local/apache2.4/bin/apachectl graceful 重新加载配置文件 4)增加php的支持---解析php找到:AddType application/x-gzip .gz .tgz在该行下面添加:AddType application/x-httpd-php .php5)增加索引页, 打开网址不用输入 index.php
找到:DirectoryIndex index.html将该行改为:DirectoryIndex index.html index.htm index.php![](https://s1.51cto.com/images/blog/201803/04/e13088a11644134aad43af375c0fd467.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
6)测试解析php
vim /usr/local/apache2.4/htdocs/1.php写入:<?phpecho "php解析正常";phpinfo();?>保存后,继续测试:curl localhost/1.php若 php不能解析会显示 源代码。
1.必须加载了php5的模块文件,
2.配置文件必须加载php5模块,3.配置文件需加载AddType application/x-httpd-php .php 注意 .前面有个空格4.配置文件需加载 DirectoryIndex index.html index.htm index.php11.16 Apache默认虚拟主机(上)
查看windows上的hosts文件,,,修改将hosts里ip和域名指定起来
C:\Windows\System32\drivers\etc更改一下 hosts的权限,用记事本打开编辑 增加 192.168.188.128 www.abc.com www.123.com1)增加虚拟主机
vim /usr/local/apache2.4/conf/httpd.conf 找到:取消注释Virtual hosts 虚拟主机
Include conf/extra/httpd-vhosts.conf
2)修改虚拟主机配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 修改为如下:最上面那个为默认虚拟主机,当发现没有配置时会访问最上面那个。3)创建对应目录 及php文件mkdir /data/wwwroot/mkdir /data/wwwroot/abc.comvim /data/wwwroot/abc.com/index.php增加<?phpecho"abc.com";?>mkdir /data/wwwroot/111.comvim /data/wwwroot/111.com/index.php增加<?phpecho"111.com";?>
11.17 Apache默认虚拟主机(下)
curl 命令:curl -xping www.abc.com 没有绑定hosts, 会访问到外网curl -x192.168.188.128:80 www.123.com
curl -x192.168.188.128:80 www.abc.comcurl -x192.168.188.128:80 asdfagcurl -x192.168.188.128:80 www.example.comcurl -x192.168.188.128:80 111.com当curl访问时,会查虚拟主机配置文件,若有定义则访问虚拟主机的定义,若没有定义都会访问默认的虚拟主机配置域名。
方法1,编辑hosts文件,绑定一下
vi /etc/hosts 方法2, curl -x192.168.188.128:80 abc.com 只要解析到域名都访问到默认虚拟主机结论:1.打开虚拟主机配置文件后,虚拟主机生效,主配置文件里配置的DocumentRoot和ServerName失效;2.虚拟主机配置文件打开后,里面可以配置很多个Virtual hosts ,每一个Virtual hosts 都有对应的DocumentRoot和ServerName,第一个为默认的虚拟主机,无论任何访问解析到这个IP上都会访问默认虚拟主机。11.18 Apache 用户认证
打开网站时只有输入用户名字和密码才能进入,比方说 管理员登陆,
一 域名认证
1)修改虚拟主机配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf2)
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming用md5类型加密创建密码文件,并创建用户aming,输入密码 123456/usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd zhangsan只增加用户和密码3)检查无误并重新加载
/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl gracefulcurl -x127.0.0.1:80 111.comcurl -x127.0.0.1:80 -uaming:123456 111.com -I4)
在windows下hosts里增加111.com192.168.188.128 www.abc.com www.123.com 111.com输入用户和密码后正常访问二 对某个文件的访问设置验证
1)修改虚拟主机配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <FilesMatch 123.php >2)重新加载,并增加123.php文件
/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl gracefulvim /data/wwwroot/111.com/123.php编辑并增加:<?phpecho"123.php";?>3)测试访问curl -x127.0.0.1:80 111.comcurl -x127.0.0.1:80 111.com/123.php -Icurl -x127.0.0.1:80 -uaming:123456 111.com/123.php -I11.19 域名跳转(上)
11.20 域名跳转(下)状态码301-- 永久重定向
1)修改虚拟主机配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 增加如下:<VirtualHost :80> DocumentRoot "/data/wwwroot/111.com" ServerName111.com ServerAlias www.example.com <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^111.com$ RewriteRule ^/(.)$ [R=301,L] </IfModule></VirtualHost>以111.com开头和结尾的2)windows下hosts增加 www.example.com
192.168.188.128 www.abc.com www.123.com 111.com www.example.com3)查apache是否加载了 rewrite模块,并加装/usr/local/apache2.4/bin/apachectl -M |grep rewrite 查一下是否有rewrite模块,vim /usr/local/apache2.4/conf/httpd.conf编辑配置文件,修改将注释取消:LoadModule rewrite_module modules/mod_rewrite.so 再查一下是否加载了模块,可以看到又了模块:/usr/local/apache2.4/bin/apachectl -M |grep rewrite/usr/local/apache2.4/bin/apachectl graceful4)测试:curl -x127.0.0.1:80 www.example.com/123.php -Iwww.example.com/123.php 跳转到了 111.com在浏览器中输入 www.example.com/123.php ,显示的时111.com/123.php
11.21 apache 访问日志
•访问日志记录用户的每一个请求ls /usr/local/apache2.4/logs/ 日志目录《定义日志记录格式》
(1)查看格式vim /usr/local/apache2.4/conf/httpd.conf //搜索LogFormatLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common 默认的(2)修改虚拟主机配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 修改: CustomLog "logs/111.com-access_log" combined(3) 重新加载配置文件 -t,graceful/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful(4)测试访问curl -x127.0.0.1:80 -I 123.comtail /usr/local/apache2.4/logs/111.com-access_log用浏览器访问一次 www.example.com/123.php :tail /usr/local/apache2.4/logs/111.com-access_log11.22 访问日志不记录静态文本
(1)修改虚拟主机配置文件,添加定义的环境,符合条件的不记录日志。vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf SetEnvIf Request_URI "..gif$" img SetEnvIf Request_URI "..jpg$" img SetEnvIf Request_URI "..png$" img SetEnvIf Request_URI "..bmp$" img SetEnvIf Request_URI "..swf$" img SetEnvIf Request_URI "..js$" img SetEnvIf Request_URI ".*.css$" imgCustomLog "logs/111.com-access_log" combined env=!img(2)检查,重新加载 配置文件,访问并查看日志
/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl gracefulcurl -x127.0.0.1:80 -I 111.com/adsfafa.jpg1tail /usr/local/apache2.4/logs/111.com-access_logcurl -x127.0.0.1:80 -I 111.com/adsfafa.jpgadsfafa.jpg1记录了,但是adsfafa.jpg没有记录
11.23 访问日志切割
(1)修改虚拟主机配置文件,更改配置,日志按日期归档。vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img 指定工具,按日期命名记录,记录间隔是一天即86400秒(2)访问一下,查看日志curl -x127.0.0.1:80 -I 111.com/123.phpls /usr/local/apache2.4/logs/ 访问日志目录11.24 配置静态元素过期时间
(1)修改虚拟主机配置文件,更改配置,增加图片访问后多久失效
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <IfModule mod_expires.c> ExpiresActive on //打开该功能的开关 ExpiresByType image/gif "access plus 1 days" ExpiresByType image/jpeg "access plus 24 hours" ExpiresByType image/png "access plus 24 hours" ExpiresByType text/css "now plus 2 hour" ExpiresByType application/x-javascript "now plus 2 hours" ExpiresByType application/javascript "now plus 2 hours" ExpiresByType application/x-shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min"</IfModule>(2) 查expires是否加载了 expires模块,并加装
/usr/local/apache2.4/bin/apachectl -M |grep expiresvim /usr/local/apache2.4/conf/httpd.conf编辑配置文件,修改将注释取消:LoadModule rewrite_module modules/mod_expires.so再查一下是否加载了模块,可以看到又了模块:
/usr/local/apache2.4/bin/apachectl -M |grep expires查一下是否有expires模块,/usr/local/apache2.4/bin/apachectl graceful3)测试:在cd /data/wwwroot/111.com/ 下传入一个png文件,访问一下curl -x127.0.0.1:80 111.com/xshell.png -I11.25 配置防盗链
(1)修改虚拟主机配置文件,更改配置定义白名单和内容
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com> SetEnvIfNoCase Referer "" local_ref SetEnvIfNoCase Referer "" local_ref #白名单站点 SetEnvIfNoCase Referer "^$" local_ref #不是跳转过来的为空,空refer可以访问 <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)"> Order Allow,Deny Allow from env=local_ref </filesmatch> </Directory> (2)检查,重新加载 /usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful (3)curl -x127.0.0.1:80 -I 111.com/xshell.png11.26 访问控制-Directory
(1)修改虚拟主机配置文件,增加配置,只有内部人可以访问,其它一律拒绝vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/admin/> Order deny,allow #顺序,先拒绝再允许 Deny from all Allow from 127.0.0.1</Directory>(2)检查 更新/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful (3)测试curl -x127.0.0.1:80 -I 111.com/admin/index.php curl -x192.168.188.128:80 -I 111.com/admin/index.php11.27 访问控制-FilesMatch
(1)修改虚拟主机配置文件,增加配置
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com> <FilesMatch "admin.php(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch></Directory>(2)检查 更新
/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful (3) mkdir admincp index.php admin/curl -x127.0.0.1:80 -I 111.com/admin/index.php curl -x192.168.188.128:80 -I '111.com/admin.php?sadfaskgnaglnaiogiw' -I11.28 限定某个目标禁止解析php
(1)修改虚拟主机配置文件,增加配置updata目录蹦解析php
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/upload> #updata目录蹦解析php php_admin_flag engine off</Directory>(2)检查 更新/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful (3)mkdir uploadcp 123.php upload/curl -x127.0.0.1:80 ''11.29 限定user_agent
(1)修改虚拟主机配置文件,增加配置vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} .curl. [NC,OR] #OR或者,NC忽略大小写 RewriteCond %{HTTP_USER_AGENT} .baidu.com. [NC] # RewriteRule .* - [F] #Forbidden 拒绝403 </IfModule>(2)检查 更新
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful (3)测试curl -x127.0.0.1:80 '' curl -A "aminglinux aminglinux" -x127.0.0.1:80 '' -A 指定useragent ls /usr/local/apache2.4/logs/ 访问日志目录cat /usr/local/apache2.4/logs/111.com-access_20180307.log 查看日志 curl被限制,而模拟的没有11.30 PHP相关配置(上)
11.31 PHP相关配置 (下)方法一: 查看php配置文件位置(有时候不准)
/usr/local/php/bin/php -i|grep -i "loaded configuration file"方法二:web查看
(1)新建一个php文件,编辑一个php文件,cd /data/wwwroot/111.com/vim index.php增加 <?phpphpinfo();?>浏览器打开 111.com/index.php , 没有配置文件(2)进入源码包目录,拷贝一份配置文件 ,并刷新配置
cp /usr/local/src/php-7.1.6/php.ini-development /usr/local/php7/etc/php.ini/usr/local/apache2.4/bin/apachectl graceful 刷新浏览器,已经有了配置文件(3)定义时区
vim /usr/local/php7/etc/php.ini 编辑配置文件找到并增加 date.timezone=Asia/Shanghai(4)增加限制安全函数
vim /usr/local/php7/etc/php.ini 编辑配置文件找到并增加如下代码,保存并更新配置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/usr/local/apache2.4/bin/apachectl graceful
刷新浏览器,提示phpinfo函数被禁止了
(5)日志相关
error_log, log_errors, display_errors, error_reporting php的错误日志----display_errors 显示错误
修改为off,报错时不提示,,变成了白页什么都不显示,但是不太好。
---- 错误日志目录error_log=/tmp/php_errors.log #定义错误输出路径 还需要定义级别------error_reporting 定义级别
error_reporting =E_ALL & ~E_NOTIC (生产中常用,)curl -A "aaa" -x127.0.0.1:80
-----open_basedir 安全选项 A站点被黑,B站点不会被黑
open_basedir =/data/wwwroot/111.com:/tmp/ 有权限的站点目录比如允许设为如下:
测试如下 不能打开
浏览器也不能打开----虚拟主机配置文件,不同的主机配置不同的站点目录,把php限定在指定 目录下,不让其它目录读写文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 其中一个虚拟主机增加php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/" 另一个虚拟主机增加php_admin_value open_basedir "/data/wwwroot/abc.com:/tmp/"(最后将禁止的phpinfo()函数取消掉,以后实验方便用)
11.32 PHP 动态模块安装
1)《PHP动态扩展模块安装》
/usr/local/php7/bin/php -m //查看模块下面安装一个redis的模块cd /usr/local/src/wget mv develop phpredis-develop.zip // 改名字unzip phpredis-develop.zip //解压cd phpredis-develop/usr/local/php7/bin/phpize //生成configure文件yum install -y autoconf 安装包
/usr/local/php7/bin/phpize 在生成./configure --with-php-config=/usr/local/php7/bin/php-configmake && make installls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/ 我们要的模块
/usr/local/php7/bin/php -i |grep extension_dir //查看扩展模块存放目录,我们可以在php.ini中去自定义该路径vim /usr/local/php7/etc/php.ini //增加一行配置(可以放到文件最后一行)extension = redis.so2)从源码包里有的包安装源码包
cd /usr/local/src/php-7.1.6/ext/ 进入php7源码包ext下,中含有很多的模块/usr/local/php7/bin/php -m |grep zip 查看发现没有安装zip模块cd zip/ 进入目录 执行后编译,即可直接安装一个源码包/usr/local/php7/bin/phpize ./configure --with-php-config=/usr/local/php7/bin/php-configmake && make installls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303//usr/local/php7/bin/php -m |grep zip 已经安装了zip模块