curl php file_get_contents 400 bad request

开始用PHP的file_get_contents请求,返回400 Bad Request,但是用浏览器或PostMan访问正常。

然后尝试用PHP的curl函数,一样的错误。

修改php.ini的user-agent或者给curl添加user-agent的header,一样的错误。

服务器直接执行curl命令,一样的错误。

经过一番研究,终于找到原因。

解决方案:url中的空格及加号需要替换为%20,执行成功。

str_replace(array(‘ ‘, ‘+’), ‘%20’, $param)

Apache通过htaccess添加权限验证

参考文章:http://www.htaccesstools.com/articles/password-protection/

With .htaccess it is very easy to password protect a folder or directory. The method is called htaccess password protection or htaccess authentication, and works by uploading two files called .htaccess and .htpasswd in the directory you want to password protect. The htaccess file should contain the following:

AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

You only need to change “/path/to/.htpasswd” with the full path to your .htpasswd. Take a look at my article on how to find the full path using PHP. Next you need to upload the .htpasswd file which contains the username and password to enter the password protected folder. The .htpasswd file should contain:

test:dGRkPurkuWmW2

The above code will allow the user “test” to access the password proteced area with the password “test”. The text “dGRkPurkuWmW2” is a encrypted version of the password. You will need to use a htpasswd generator to create another password. Each line in the .htpasswd file contains a username and password combination, so feel free to add as many combinations as you like.
The automatic way – Use the generator
You can also just use the htaccess authentication generator to create a htaccess file for password protection.

React Native webview中video播放MP4格式视频只有音频

参考文章:https://blog.csdn.net/shaobo8910/article/details/81121965?utm_source=blogxgwz8

昨天遇到了这样一个问题,我打算使用HTML5的video标签简单的在网页上插入一个MP4视频,类似这样

<video preload=”none” controls>
<source src=”video.mp4″ type=”video/mp4″>
</video>
但是在网页中我点击播放的时候,却发现只有声音而没有图像。不过我用电脑中的视频播放器播放这段视频还是可以看到图像的。那么问题来了,这个锅谁来背?

问题出在哪

经过一些搜索得知,其实根本的问题是虽然大家都是.mp4后缀的文件,但是编码方式不同,而video标签的标准是用H.264方式编码视频的MP4文件(当然video标签还可以播放WebM和OGG格式的文件,这里就不多说了),而我之前使用的视频文件是Xvid编码的MP4文件,所以只能播放出音频而不能看到图像

解决方法

既然知道了问题出在哪,接下来就要想办法把我现有的视频文件转码成H.264编码的文件。
我使用的是Mac, 而且之前并没有装过什么视频转码的应用,搜索了一下发现Mac自带一个功能叫“编码所选视频文件”,我尝试着使用了一下。发现然并卵,生成的文件就像我在浏览器中播放的一样,只有声音没有图像,大概这个功能更适合吧其他格式的文件转换成MP4吧。
经过进一步搜索,发现了ffmpeg这个神器,使用这个命令行的工具,最终完成了视频编码的转换,下面详细介绍一下转换的方法

安装并使用 ffmpeg

我使用的是Mac,并且安装了homebrew,所以可以直接通过homebrew安装ffmpeg

brew install ffmpeg
其实ffmpeg的指令有很多,想要详细了解可以参见ffmpeg参数中文详细解释,这里我只需要把一个其他编码格式的MP4文件转换成H.264编码的MP4文件,具体指令如下

ffmpeg -i input.mp4 -vcodec h264 output.mp4
自行替换input和output文件名就可以了,其实这里input文件还可以是其他格式的视频文件,ffmpeg可以自动识别转换的方式,非常便利!
经过上述转换,使用输出的文件在Chrome上播放就没有问题了

MySQL的ibdata1文件占用过大瘦身

参考文章:https://blog.csdn.net/qq_32448349/article/details/82965878

处理MySQL的ibdata1文件过大问题

本人在对数据库进行大量的数据插入和删除的时候,发现ibdata1的占了将近一个T

ibdata1文件是什么?

ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、撤销记录、修改buffer和双写buffer。如果file-per-table选项打开的话,该文件则不一定包含所有表的数据。当innodb_file_per_table选项打开的话,新创建表的数据和索引则不会存在系统表空间中,而是存放在各自表的.ibd文件中.

显然这个文件会越来越大,innodb_autoextend_increment选项则指定了该文件每次自动增长的步进,默认是8M.

是什么原因导致ibdata1文件会越来越大?

ibdata1存放数据,索引和缓存等,是MYSQL的最主要的数据。所以随着数据库越来越大,表也会越大,这个无法避免的。如果时间长了,越来越大,我们在处理日志和空间的时候就不是那么方便了,就不知从何入手了。接下来我们就要处理下这样的情况,分库存储数据。

该如何处理呢?

首先我们把数据库文件备份下来,然后直接删除ibdata文件(为了保险起见最好先全备一次,做到数据安全和完整),然后再重新导入数据库文件即可!

具体操作步骤如下(截图并不完整,但是首先要弄懂大概情况和原理):

第一种方法:

1、停止业务,备份一次全库

mysqldump -uroot -ppassword –all-databases  > all_mysql.sql
2、备份完成,停止数据库

systemctl stop mariadb 或者 service mysqld stop
3、修改配置文件

在[mysqld]下增加下面配置 innodb_file_per_table=1 验证配置是否生效,可以重启mysql后,执行 #service mysqld restart
4、验证

mysql -uroot -ppassword mysql

show variables like ‘%per_table%’;

+———————–+——-+

| Variable_name | Value |

+———————–+——-+

| innodb_file_per_table | ON |

+———————–+——-+

1 row in set (0.00 sec)

innodb_file_per_table的状态变为ON

5、删除ibdata1文件和日志

rm -rf ibdata1

rm -rf ib_logfile*

6、还原数据库

mysql -uuser -ppassword

source all_mysql.sql

数据文件单独存放(共享表空间改为每个表独立的表空间文件)。

第二种方法:

把数据库的表引擎为InnoDB 的数据表转为MyIsam 后,删除ibdata1,按上面方法修改成独立的表空间,在把改成MyIsam引擎的表改为InnoDB,这个就要衡量那种方法的时间耗时最短,两者取其优。数据的表和库很多的通常不建议这么做,耗时间。

CentOS + Apache2.4 + PHP5.6 FPM报503错误

Service Unavailable 503错误,很可能的原因是服务器过载。

错误提示:

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

服务器使用Apache2.4,fpm方式加载PHP,因此排查解决过程如下。

1. 查看PHP-FPM日志
#tail -f /alidata/server/php56/var/log/php-fpm.log
WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

2. 修改PHP-FPM配置
#vi /alidata/server/php56/etc/php-fpm.conf
pm.max_children = 5
​修改为
pm.max_children = 100

计算依据参考:https://blog.csdn.net/solmyr_biti/article/details/53955141
pm.max_children = Total RAM dedicated to the web server / Max child process size – in my case it was 85MB
The server has 8GB of RAM, so:
pm.max_children = 6144MB / 85MB = 72

JS关闭网页window.close(兼容各类浏览器,包括微信浏览器)

function closePage()

{

var userAgent = navigator.userAgent;

if (userAgent.indexOf(“Firefox”) != -1 || userAgent.indexOf(“Chrome”) !=-1) {// Firefox或Chrome中关闭

  window.location.href = “about:blank”;

} else {

  window.opener = null;

  window.open(“”, “_self”);

  window.close();

}

if (WeixinJSBridge) {// 微信中关闭

WeixinJSBridge.call(‘closeWindow’);

}

}

CentOS Requires: libc.so.6(GLIBC_2.17)(64bit) 升级glibc到2.17

1、原先的系统glibc库的版本是2.12,需要升级到2.17版本。

下载地址:

http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
这里可以选择你所需要的版本。

2、安装部署

[root@kafzook1 common]# tar -xf glibc-2.17.tar.gz
[root@kafzook1 common]# cd glibc-2.17
[root@kafzook1 glibc-2.17]# mkdir build; cd build
[root@kafzook1 build]# ../configure –prefix=/usr –disable-profile –enable-add-ons –with-headers=/usr/include –with-binutils=/usr/bin
[root@kafzook1 build]# make -j 8
[root@kafzook1 build]# make install
[root@kafzook1 common]# strings /lib64/libc.so.6 | grep GLIBC
会看到下面的结果
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

我们可以看到部署成功后的glibc的版本为2.17

问题总结:

在上面安装的过程中我们可能会遇到下面的问题

1. Requires: libc.so.6(GLIBC_2.17)(64bit),升级glibc后,通过strings /lib64/libc.so.6 | grep GLIBC可查到GLIBC_2.17,但还是报错。

解决办法:通过yum clean all,yum makecache,yum update解决了

2. 百度了一下这个问题,说是这个变量后面有一个冒号“:”,我们打印一下这个变量查看一下果然有一个冒号。
他人博客地址:glibc问题解决方案

解决方案:找到这一环境变量,把后面的冒号+$LD_LIBRARY_PATH去掉,然后source一下。

我们看到后面的冒号已经没有了。

———————
作者:wyl9527
来源:CSDN
原文:https://blog.csdn.net/wyl9527/article/details/78256066
版权声明:本文为博主原创文章,转载请附上博文链接!

Linux服务器中木马(肉鸡)手工清除方法

参考地址:https://www.cnblogs.com/shiyiwen/p/5191869.html

http://www.bubuko.com/infodetail-1010815.html

补充:

      1. 文档中提到把ps ss netstat等命令上传到/root目录中,估计是需要从网上下载或从镜像中拷贝。没有从网上找到,因此直接执行了文中的chattr  -i -a /bin/ps && rm /bin/ps -f,然后yum install procps,这样即恢复了ps命令。其他命令也是如此。

Xcode 10 Multiple commands produce 编译失败 ios

刚更新xcode10 ,打开以前正常的项目发现爆红,出现错误。

问题显示如下:

Showing All Messages
:-1: Multiple commands produce '/Users/mc/Library/Developer/Xcode/DerivedData/phoenixApp-djrwfkrhnviecgesozjaguwadctu/Build/Products/Debug-iphonesimulator/phoenixApp.app/disclosure-arrow@3x.png':
1) Target 'phoenixApp' (project 'phoenixApp') has copy command from '/Users/mc/Desktop/乐嗯/phoenixApp01.07/phoenixApp/disclosure-arrow@3x.png' to '/Users/mc/Library/Developer/Xcode/DerivedData/phoenixApp-djrwfkrhnviecgesozjaguwadctu/Build/Products/Debug-iphonesimulator/phoenixApp.app/disclosure-arrow@3x.png'
2) Target 'phoenixApp' (project 'phoenixApp') has copy command from '/Users/mc/Desktop/乐嗯/phoenixApp01.07/phoenixApp/左侧滑动菜单/disclosure-arrow@3x.png' to '/Users/mc/Library/Developer/Xcode/DerivedData/phoenixApp-djrwfkrhnviecgesozjaguwadctu/Build/Products/Debug-iphonesimulator/phoenixApp.app/disclosure-arrow@3x.png'
image.png

这个的原因是项目中使用第三方库,里面有Info.plist之类的,而且是不止一个库中有,重复的这些文件,导致的报错。或者项目中重复引用同一个文件图片所导致的。

解决办法

方法1:

target > Build phase > Copy Bundle Resource/Compile Sources,删掉第三方库中重复的上述文件即可。 选中文件后,往下滑动找到减号移除,点击一次即可,不然就会删除其他的文件。

方法2:

更换编译系统

  • 1 打开File ->>选择 project setting 或者 workspace setting
  • 2 更换默认build system 为 legacy build system ->>然后右下角 done ->> 然后重新编译项目

综上两种方案,我推荐第一种,因为这是xcode的新特性,去除重复参加编译的文件。

作者:姜永永
链接:https://www.jianshu.com/p/39dab26a4c53
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Zend Framework exceeds the defined form size

程序上线很久了,一直没发生过此问题,突然报错。

由于代码没有动过,加上最近调整过服务器的PHP配置,因此猜测是PHP配置的问题。

果不其然。

post_max_size

upload_max_filesize

php.ini中的这两个配置项,由于其他项目上传大文件的需要,设置成了2048M。

经过反复修改此参数,发现不能超过2048M。

两个参数均设置为2000M,问题消失。