php
PHP7.2 下mcrypt_module_open() 无法使用的解决方法
星期五, 二月 28th, 2020 | php | 没有评论
php版本升级到7.2后,其他看下来没有什么问题,在小程序的授权上,出现了错误,无法找到mcrypt_module_open的函数.
查询网上方法修复之.
主要是使用 openssl_decrypt来替换解决,解密协议为AES-128-CBC,
如果无法解析可以尝试AES-256-CBC,本人使用AES-128-CBC正常解析的
微信那边解密错误会返回错误码-41003,则解析错误.
1.修改文件wxBizDataCrypt.php
› Continue reading
centos7下的php-fpm的优化
星期四, 十月 3rd, 2019 | linux, php | 没有评论
云主机只有1C1G的内存,既要运行wordpress还要运行一个java程序及mysql,内存实在吃紧,运行1天发现mysql内存不足被杀掉,随优化之。
1.优化mysql参数
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
详情可以参考 https://www.pomelolee.com/1304.html
2.php-fpm优化,减少php-fpm的数量
配置文件地址:/etc/opt/remi/php70/php-fpm.conf
实际修改配置文件:/etc/opt/remi/php70/php-fpm.d/www.conf
systemctl stop php70-php-fpm.service
pm = dynamic
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
systemctl restart php70-php-fpm.service
让PHP7兼容老版本的php5.5.x或者5.6下的mysql_connect的处理代码
星期一, 九月 9th, 2019 | linux, php | 没有评论
1.昨天折腾了下服务器,把系统从centos6.5更新到7.6,也把对应的php版本升级到了php7.0.x系列
2.好多年没有再怎么写php代码了,以前写的也是在php5.5.x的版本写的,升级后发现程序无法使用,郁闷ing
3.跟踪下 /var/opt/remi/php70/log/php-fpm 下的 www-error.log发现是 php7已经不支持mysql_connect
4.网上找了下兼容的代码新增了 mysql_num_rows的函数的处理,我以前的老代码又可以欢快的跑起来了,记录下,也方便需要的朋友
$dbhost = DATA_HOST; $dbport = 3306; $dbuser = DATA_USERNAME; $dbpass = DATA_PASSWORD; $dbname = DATA_NAME; if(!function_exists('mysql_connect')){ function mysql_connect($dbhost, $dbuser, $dbpass){ global $dbport; global $dbname; global $mysqli; $mysqli = mysqli_connect("$dbhost:$dbport", $dbuser, $dbpass, $dbname); return $mysqli; } function mysql_select_db($dbname){ global $mysqli; return mysqli_select_db($mysqli,$dbname); } function mysql_fetch_array($result){ return mysqli_fetch_array($result); } function mysql_fetch_assoc($result){ return mysqli_fetch_assoc($result); } function mysql_fetch_row($result){ return mysqli_fetch_row($result); } function mysql_query($query){ global $mysqli; return mysqli_query($mysqli,$query); } function mysql_escape_string($data){ global $mysqli; return mysqli_real_escape_string($mysqli, $data); } function mysql_real_escape_string($data){ return mysql_real_escape_string($data); } function mysql_close(){ global $mysqli; return mysqli_close($mysqli); } function mysql_num_rows($result){ return mysqli_num_rows($result); } } |
php-fpm的php参数的配置和启动
星期二, 九月 4th, 2018 | php | 没有评论
0.启动:(基于php5.5.20)
/usr/local/webserver/php/sbin/php-fpm -D |
1.配置文件路径
/usr/local/webserver/php/etc
重要的配置文件:
php.ini 及php-fpm.conf
2.说明如下:php.ini
######避免PHP信息暴露在http头中 expose_php = Off ######避免暴露php调用mysql的错误信息 display_errors = Off ######在关闭display_errors后开启PHP错误日志(路径在php-fpm.conf中配置) log_errors = On ######设置PHP的扩展库路径 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20141001/" ######设置PHP的opcache和mysql动态库 zend_extension=opcache.so extension=mysqli.so extension=pdo_mysql.so ######设置PHP的时区 date.timezone = PRC ######开启opcache [opcache] ; Determines if Zend OPCache is enabled opcache.enable=1 ######设置PHP脚本允许访问的目录(需要根据实际情况配置) ;open_basedir = /data/nginx/html; |
3. 配置php-fpm.conf 保持
nginx和php隐藏版本号信息
星期四, 十二月 29th, 2016 | php | 没有评论
nginx 隐藏版本号 配置nginx.cnf server_tokens off; 即可
1 2 3 4 | http { # ...省略一些配置 server_tokens off; } |
2.php 的版本信息 会在 HTTP头,以类似X-Powered-By: PHP/7.0.14 这种形式
在php.ini 中关闭 expose_php = Off 即可
1 2 3 4 5 6 7 8 9 10 | ;;;;;;;;;;;;;;;;; ; Miscellaneous ; ;;;;;;;;;;;;;;;;; ; Decides whether PHP may expose the fact that it is installed on the server ; (e.g. by adding its signature to the Web server header). It is no security ; threat in any way, but it makes it possible to determine whether you use PHP ; on your server or not. ; http://php.net/expose-php expose_php = On |
对应改为记得重启下php 和对应的nginx
解决ThinkPHP路由404问题的 nginx 配置文件
星期一, 十一月 21st, 2016 | php | 没有评论
完美支持ThinkPHP的四种url模式, 静态文件不会再跑一次fastcgi浪费资源
ThinkPHP的几种url模式,如果nginx 不做任何配置,代理到php都是返回404错误,要解决也很简单
做好nginx的配置 做到动静分离和路由重写即可,配置如下:
其他日志配置等就不再贴出
› Continue reading
PHP中获取当前页面的URL的方法
星期五, 五月 1st, 2015 | php | 没有评论
脚本语言就是方便,随便写随便更新
要做以前的域名调整要把参数也调用过来,又设计到指定的不能直接转,有点绕了,废话不说了;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 测试网址: http://localhost/blog/testurl.php?id=359 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br>"; #localhost //获取网页地址 echo $_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php //获取网址参数 echo $_SERVER["QUERY_STRING"]."<br>"; #id=359 //获取用户代理 echo $_SERVER['HTTP_REFERER']."<br>"; //获取完整的url echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; #http://localhost/blog/testurl.php?id=359 //包含端口号的完整url echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; #http://localhost:80/blog/testurl.php?id=359 //只取路径 $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; echo dirname($url); #http://localhost/blog |
Nginx 1.6.2 + PHP 5.5.20 + MySQL 5.6.10 在 CentOS64 下的编译安装
星期二, 一月 6th, 2015 | linux | 没有评论
实际安装可以最新Nginx1.10.11 和php5.5.38 mysq5.7
更新时间到 2017-03-01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | 1.系统预先配置 yum install wget yum install pcre yum install openssl* yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers make yum -y install gd gd2 gd-devel gd2-devel /usr/sbin/groupadd www /usr/sbin/useradd -g www www ulimit -SHn 65535 mkdir -p /ia/data/ cd /ia/data/ wget http://ftp.exim.llorien.org/pcre/pcre-8.32.tar.gz tar -zxvf pcre-8.32.tar.gz mkdir tgz mv pcre-8.32* tgz/ mkdir installsoft cd installsoft/ wget http://nginx.org/download/nginx-1.6.2.tar.gz tar xzvf nginx-1.6.2.tar.gz cd nginx-1.6.2 ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/ia/data/tgz/pcre-8.32 --with-http_realip_module --with-http_image_filter_module make make install /usr/local/webserver/nginx/sbin/nginx -V 2、安装 MySQL: wget http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.10-linux-glibc2.5-x86_64.tar.gz tar zxvf mysql-5.6.10-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.10-linux-glibc2.5-x86_64 /usr/local/webserver/mysql /usr/sbin/groupadd mysql /usr/sbin/useradd -g mysql mysql mkdir -p /Data/data/mysql/data yum install libaio /usr/local/webserver/mysql/scripts/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/ia/data/mysql/data --user=mysql ##mysql 5.7更新了初始化方式会有默认密码生成 使用 --initialize-insecure 会不生成root密码否则注意看密码 /usr/local/webserver/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/webserver/mysql --datadir=/ia/data/mysql/data sed -i "s#/usr/local/mysql#/usr/local/webserver/mysql#g" /usr/local/webserver/mysql/bin/mysqld_safe GRANT ALL PRIVILEGES ON *.* TO 'ia_admin'@'localhost' IDENTIFIED BY '12345678'; GRANT ALL PRIVILEGES ON *.* TO 'ia_admin'@'127.0.0.1' IDENTIFIED BY '12345678'; GRANT ALL PRIVILEGES ON *.* TO 'ia_admin'@'%' IDENTIFIED BY '12345678'; ##忘记密码重置的配置 my.cnf 添加 #skip-grant-tables #skip-networking #后续mysql5.7登录mysql执行 ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678'; update user set authentication_string=PASSWORD("12345678") where User='root'; ##修改成功后 可以启用GRANT去新增用户,会让强制改下root密码再执行 3、安装PHP依赖库 mkdir -p /usr/local/webserver/libs/ wget http://www.ijg.org/files/jpegsrc.v9.tar.gz tar zxvf jpegsrc.v9.tar.gz cd jpeg-9/ ./configure --prefix=/usr/local/webserver/libs --enable-shared --enable-static --prefix=/usr/local/webserver/libs make make install cd ../ wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.2.tar.gz tar zxvf libpng-1.6.2.tar.gz cd libpng-1.6.2/ ./configure --prefix=/usr/local/webserver/libs make make install cd ../ wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.gz tar zxvf freetype-2.4.12.tar.gz cd freetype-2.4.12/ ./configure --prefix=/usr/local/webserver/libs make make install cd ../ wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz" wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz" wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz" tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure --prefix=/usr/local/webserver/libs make make install cd libltdl/ ./configure --prefix=/usr/local/webserver/libs --enable-ltdl-install make make install cd ../../ tar zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9/ ./configure --prefix=/usr/local/webserver/libs make make install cd ../ vi /etc/ld.so.conf 添加: /usr/local/webserver/libs/lib 然后: ldconfig tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ export LDFLAGS="-L/usr/local/webserver/libs/lib -L/usr/lib" export CFLAGS="-I/usr/local/webserver/libs/include -I/usr/include" touch malloc.h ./configure --prefix=/usr/local/webserver/libs --with-libmcrypt-prefix=/usr/local/webserver/libs make make install cd ../ 4、编译安装PHP 5.5 wget http://cl1.php.net/get/php-5.5.20.tar.gz/from/this/mirror tar zxvf php-5.5.20.tar.gz cd php-5.5.20/ export LIBS="-lm -ltermcap -lresolv" export DYLD_LIBRARY_PATH="/usr/local/webserver/mysql/lib/:/lib/:/usr/lib/:/usr/local/lib:/lib64/:/usr/lib64/:/usr/local/lib64" export LD_LIBRARY_PATH="/usr/local/webserver/mysql/lib/:/lib/:/usr/lib/:/usr/local/lib:/lib64/:/usr/lib64/:/usr/local/lib64" ln -s /usr/local/webserver/mysql/lib/libmysqlclient.so.20.3.4 /usr/local/webserver/mysql/lib/libmysqlclient_r.so ./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir=/usr/local/webserver/libs --with-jpeg-dir=/usr/local/webserver/libs --with-png-dir=/usr/local/webserver/libs --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/usr/local/webserver/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts make make install cp php.ini-development /usr/local/webserver/php/etc/php.ini ##生产环境推荐 cp php.ini-production /usr/local/webserver/php/etc/php.ini cd ../ ln -s /usr/local/webserver/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 如果是5.7的mysql做软链接 ln -s /usr/local/webserver/mysql/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20 mv /usr/local/webserver/php/etc/php-fpm.conf.default /usr/local/webserver/php/etc/php-fpm.conf ##一定记得修改 php-fpm.conf 的启动组为www(把对应的nobody修改下,否则php文件无法接收) 5、编译安装PHP扩展 wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz tar zxvf autoconf-latest.tar.gz cd autoconf-2.69/ ./configure --prefix=/usr/local/webserver/libs make make install cd ../ wget http://pecl.php.net/get/memcache-2.2.7.tgz tar zxvf memcache-2.2.7.tgz cd memcache-2.2.7/ export PHP_AUTOCONF="/usr/local/webserver/libs/bin/autoconf" export PHP_AUTOHEADER="/usr/local/webserver/libs/bin/autoheader" /usr/local/webserver/php/bin/phpize ./configure --with-php-config=/usr/local/webserver/php/bin/php-config make make install cd ../ 打开 /usr/local/webserver/php/etc/php.ini 查找 ; extension_dir = "ext" 在其后增加一行: extension = "memcache.so" |
出现Undefined variable: 引发的几个操作php-fpm等
星期三, 五月 28th, 2014 | linux, php | 没有评论
以前写的一个php脚本,在换成php5.5.8的版本的时候出现了 PHP Notice: undefined index xxx 的警告信息,感觉不舒服解决方法
方法1:服务器配置修改 修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE
方法2:页面头部新增 error_reporting(E_ERROR | E_WARNING | E_PARSE); 或者 error_reporting(E_ALL & E_NOTICE); 或者 error_reporting(0);
检测参数方法:(在PHP5.5.8依然无效 Undefined variable: param)
定义一个函数: function _get($str){ $val = !empty($_GET[$str]) ? $_GET[$str] : null; return $val; } |
延伸问题:
1.修改在php.ini的参数后重启 php-fpm 网上的那种 php5.4下的 kill 等都无效(在5.5下无php-fpm.pid,kill对应进程也是无效的,我的默认起了3个php-fpm进程)
› Continue reading
修改PHP配置文件上传大文件
星期三, 四月 3rd, 2013 | php | 没有评论
要上传大文件到服务器,推荐使用flash长传组件(100M以内还是不错的)swfupload
PHP上传文件默认不能满足这个需求需要修改
1. 一般的php文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time
在php.ini里查找
max_execution_time
默认是30秒.改为
max_execution_time = 0
0表示没有限制
以上修改的是php上传文件中脚本执行超时时间
2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到php上传文件。
php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
查找 post_max_size .改为
post_max_size = 150M
› Continue reading
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)