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)

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命令。其他命令也是如此。

React Native WebView打开网页自动适应页面大小

参考文章:https://stackoverflow.com/questions/50110920/how-to-zoom-out-in-webview-in-react-native

<WebView
injectedJavaScript={
`const meta = document.createElement(‘meta’);
meta.setAttribute(‘content’, ‘width=device-width, initial-scale=0.5, maximum-scale=0.5, user-scalable=0’);
meta.setAttribute(‘name’, ‘viewport’);
document.getElementsByTagName(‘head’)[0].appendChild(meta); `
}
scalesPageToFit={false}
/>

 

云通讯访问报错:172001网络错误

172001,错误信息=网络错误
172001是无法连接我们的服务器,请求不到或者发不出请求,sdk本地打印的故障报错。需要按如下顺序排查:
a.先打印请求url确认serverIP是否传错; 
b.Linux系统试用:curl -l  https://app.cloopen.com:8883 测试下,看是否是通的,windows系统,在浏览器输入 https://app.cloopen.com:8883看是否正常; 
c.如果是在Linux下 centos版本大于6.0并且使用java开发,用java -version确认下jdk版本(在此环境下需要使用sunjdk,openjdk不行);
d. 在 /etc/hosts 文件里添加" 42.121.254.126  app.cloopen.com",重启服务器。

React Native打包后运行闪退

错误原因1:将原本是JPG的图片强制改成PNG扩展名。

reactnative bundle platform android dev false entryfile index.js bundleoutput android/app/src/main/assets/index.android.bundle assetsdest android/app/src/main/res/

 

错误原因2: DrawerNavigator.js本身的错误

https://github.com/aksonov/react-native-router-flux/issues/3124

sed -i -e 's/TabRouter/tabRouter/g' node_modules/react-navigation/src/navigators/DrawerNavigator.js
sed -i -e 's/\/routers\/tabRouter/\/routers\/TabRouter/g' node_modules/react-navigation/src/navigators/DrawerNavigator.js

Xcode上传后iTunes Connect构建版本不显示

原文地址:https://blog.csdn.net/qxuewei/article/details/52790357

在升级到Xcode8版本以后大多数人会碰到这个问题-开开心心开发好一款app以后上传到iTunes后台提交审核,然而iTunes Connect后台活动栏里没有出现我们上传的app,确切的说是显示一会儿之后平白无故的消失,也不见Apple的邮件告知原因,只能借助强大的网络和那些具有分享精神的巨人!
这里写图片描述

各种谷歌百度后找到解决方法,因为iOS10以后Apple更注重保护用户权限,在任何需要使用设备权限的地方都需要提前声明.
在项目中的plist文件中,添加如下字段
这里写图片描述

如下方便复制粘贴用:
麦克风权限:
Privacy – Microphone Usage Description 是否允许此App使用您的麦克风?

相册权限:
Privacy – Photo Library Usage Description 是否允许此App访问您的相册?

相机权限:
Privacy – Camera Usage Description 是否允许此App使用您的相机?

通讯录权限:
Privacy – Contacts Usage Description 是否允许此App访问您的通讯录?

地理位置权限(后台定位):
Privacy – Location Always Usage Description 是否允许此App访问您的地理位置?

地理位置权限(前台定位):
Privacy – Location When In Use Usage Description 是否允许此App访问您的地理位置?

蓝牙权限:
Privacy – Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?

日历权限:
Privacy – Calendars Usage Description 是否允许此App使用日历?

注意在复制的时候前后不要空格,并且在权限字段后一定要有描述,不然xcode会自动把这个声明删除

查到有前辈讲其中有几项权限是必需设置的,我仅仅设置麦克风,相机,相册的权限声明之后但是仍然没有构建成功,所以将这所有权限在plist文件中统一声明一下最完美,并且提醒用户的权限提示框也只有在app中代码使用到此功能才会弹出,所以不必担心影响用户体验.

所有权限字段添加完成,再次无论用Xcode还是Application loader上传成功之后,在iTunes Connect 后台就会看到成功构建的版本,提交审核就可以了!
这里写图片描述

mysql重连,连接丢失:The last packet successfully received from the server

原文地址:http://blog.csdn.net/dxswzj/article/details/42778031

问题原因:

其实上面的提示中已经给出了一部分的简要说明,简单来说就是: 程序启动时,在跟DB首次交互时,获得了相应的DB Connection资源,从而进行正常的DB读写操作。但是在下次进行DB读写时(我的定时任务本身设置的时间间隔是24小时),应用程序认为这个连接是可以正常使用的(程序执行过一次之后没有退出,这个连接从来并没有被释放掉),但实际上,这个连接已经坏掉了,因为Mysql本身已经把这个连接标记为timeout了。于是,应用程序“傻乎乎”的在这个已经坏掉的数据通道上发起对DB的读写请求,但是Mysql已经对这些请求不买账了。。。

 

为啥呀,mysql到底认为这个连接空闲多长时间算过期啊?

这个可以通过查看mysql的配置文件,看看是否有对这个时间做过特殊的配置,我的场景下在64位linux服务器上部署的mysql服务器,这个配置文件在:在/etc/my.cnf

如果你打开这个文件,发现并没有如下这行配置:

 

Xml代码  收藏代码
  1. wait_timeout=xxx (这里xxx是数据,单位为秒)

说明你并没有对这个timeout做过特殊配置,通常Mysql默认的配置是8小时。你也可以在登陆进入mysql之后,通过如下命令确认一下:

 

Sql代码  收藏代码
  1. show global variables like ‘wait_timeout’;

结合上面我的程序的配置(24小时执行一次),上面的问题就好解释了:24小时之后程序再次对DB进行读写操作时,Mysql单方已经认为之前connection已经timeout了(停止活动了8小时以上就认为过期了)。

如何解决:

1.1 错误信息:

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 20,820,001 milliseconds ago.  The last packet sent successfully to the server was 20,820,002 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
		at sun.reflect.GeneratedConstructorAccessor29.newInstance(Unknown Source) ~[na:na]
		at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_51]
		at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_51]
		at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ~[mysql-connector-java-5.1.29.jar:na]
		at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1129) ~[mysql-connector-java-5.1.29.jar:na]
		at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3988) ~[mysql-connector-java-5.1.29.jar:na]
		at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2598) ~[mysql-connector-java-5.1.29.jar:na]
		at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778) ~[mysql-connector-java-5.1.29.jar:na]
		at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2828) ~[mysql-connector-java-5.1.29.jar:na]
		at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5372) ~[mysql-connector-java-5.1.29.jar:na]
		at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:881) ~[c3p0-0.9.1.1.jar:0.9.1.1]
		at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.setAutoCommit(AttributeRestoringConnectionInvocationHandler.java:98) ~[quartz-2.2.1.jar:na]

1.2 解决方法

– 如果使用的是JDBC,在JDBC URL上添加?autoReconnect=true,如:

jdbc:mysql://10.10.10.10:3306/mydb?autoReconnect=true

– 如果是在Spring中使用DBCP连接池,在定义datasource增加属性validationQuerytestOnBorrow,如:

<bean id="vrsRankDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${countNew.jdbc.url}" />
    <property name="username" value="${countNew.jdbc.user}" />
    <property name="password" value="${countNew.jdbc.pwd}" />
    <property name="validationQuery" value="SELECT 1" />
    <property name="testOnBorrow" value="true"/>
</bean>

– 如果是在Spring中使用c3p0连接池,则在定义datasource的时候,添加属性testConnectionOnCheckintestConnectionOnCheckout,如:

<bean name="cacheCloudDB" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${cache.url}"/>
    <property name="user" value="${cache.user}"/>
    <property name="password" value="${cache.password}"/>
    <property name="initialPoolSize" value="10"/>
    <property name="maxPoolSize" value="${cache.maxPoolSize}"/>
    <property name="testConnectionOnCheckin" value="false"/>
    <property name="testConnectionOnCheckout" value="true"/>
    <property name="preferredTestQuery" value="SELECT 1"/>
</bean>

 

Zend Framework如何不使用伪静态(rewrite)

Zend Framework的原理是把所有文件的访问都引向单一入口程序index.php,然后再由Zend_Controller_Router_Route进行路由转发,如果使用使用Apache服务器的.htaccess重写规则就必须打开Apache的服务器的mod_rewrite模块,但是很多的服务器是没有打开这个模块的,比如你买了一个空间,结果空间没有打开这个模块,那你又必须使用,怎么办呢?Zend Framework就不可以使用了吗?有的人说不可以,巧妇难为无米之炊。但是我想想觉得如果这个问题都没有解决Zend Framework怎么能在PHP界立足呢?
后来我找到了解决的方法。方法其实很简单,就是在访问的时候加上index.php就可以了,例如:正常情况下的URL:http://www.youdomain.com/controller/action。现在我们只需把URL改成:http://www.youdomain.com/index.php/controller/action,并把.htaccess删除掉就可以了。

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=1782

阿里云服务器空间不足问题

CentOS服务器

一种办法是,将/alidata/www目录或/alidata整个目录挂载到新的磁盘。可参考上一篇文章。

另一种快速办法是,检查日志文件是否占用了过多空间。

cd /alidata/log
du -hs httpd

看看你的apache日志文件是否占用了过多的空间,作者在查看时有7.7G!

Discuz在Linux下目录可写权限配置命令

chmod 777 config data data/cache data/avatar data/plugindata data/download data/addonmd5 data/template data/threadcache data/attachment data/attachment/album data/attachment/forum data/attachment/group data/log uc_client/data/cache uc_server/data/ uc_server/data/cache uc_server/data/avatar uc_server/data/backup uc_server/data/logs uc_server/data/tmp uc_server/data/view