PHP多版本共存:php5.6与php5.5共存

续:
php多版本共存,需要使用php-fpm来运行php方便,这样更方便配置和管理
准备工作:
创建PHP5.6的相关目录,不要与已安装的php5.5的目录相同

mkdir /alidata/server/php56  安装目录 
mkdir /alidata/server/php56/etc      配置文件存放目录

源码包下载:

wget http://cn2.php.net/distributions/php-5.6.30.tar.gz

解压,编译安装php

tar xvf php-5.6.30.tar.gz
cd php-5.6.30
所有配置参数与上一个php5.5的完全相同,只有安装的目录和配置文件目录不同。
./configure \
--prefix=/alidata/server/php56 \
--with-config-file-path=/alidata/server/php56/etc \
--with-apxs2=/alidata/server/httpd/bin/apxs \
--with-libdir=lib64
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-opcache \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mssql=/usr/local/freetds \
--with-pdo-dblib=/usr/local/freetds \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl \
--with-zlib \
--enable-zip \
--with-bz2 \
--with-gd \
--without-sqlite3 \
--without-pdo-sqlite \
--with-pear \
--with-mcrypt \
--with-freetype-dir=/usr/local/freetype.2.1.10 \
--with-jpeg-dir=/usr/local/jpeg.6

make && make install

若编译安装时遇到如下错误

/usr/local/src/php-5.3.10/ext/xmlrpc/libxmlrpc/encodings.c:73: undefined reference to `libiconv_open’ /usr/local/src/php-5.3.10/ext/xmlrpc/libxmlrpc/encodings.c:81: undefined reference to `libiconv’ /usr/local/src/php-5.3.10/ext/xmlrpc/libxmlrpc/encodings.c:101: undefined reference to `libiconv_close’ collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] 错误
在执行完 ./configure … 之后,修改下 Makefile,找到其中的
EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient -lmcrypt -lldap -llber -lfreetype -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt
在最后面添加 -liconv ,修改后如下
EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient -lmcrypt -lldap -llber -lfreetype -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -liconv

配置php-fpm

拷贝配置文件,在安装目录里
cd /alidata/server/php56/etc
cp php-fpm.conf.default php-fpm.conf 
修改配置文件
vim php-fpm.conf
将listen = 127.0.0.1:9000 改为listen = 127.0.0.1:9056
与php5.59000端口区别开,防止端口冲突

拷贝服务脚本,在源码包里
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php56-fpm
# chmod +x /etc/init.d/php56-fpm
# chkconfig --add php56-fpm

启动php-fpm

 service php56-fpm start
 监听端口为:9056

nginx 切换php版本只需修改nginx.conf即可
php5.5 php-fpm 监听端口为:9000
php5.6 php-fpm监听端口为:9056

vim /etc/nginx/nginx.conf
将fastcgi_pass   127.0.0.1:9000;修改为
  fastcgi_pass   127.0.0.1:9056;
  重启nginx,打开phpinfo

apache切换PHP版本:
由于之前是用php mod来运行php,php作为apache的一个模块来运行。如果想要使用多版本切换,就不能再用php mod来运行了,必须要用php-fpm运行,然后和Apache关联。

修改配置文件

vim /etc/httpd/httpd.conf

首先注释掉以下内容(这是用php mod与PHP关联的)

#LoadModule php5_module modules/libphp5.so
#<FilesMatch \.php$> 
   #SetHandler application/x-httpd-php
#</FilesMatch>

然后去掉以下两行的注释,开启代理功能

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

再添加下面内容,使用php-fpm与PHP关联

<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9056"
</FilesMatch>

重启apache服务,成功切换为php5.6
致此全部完成,nginx和apache全都可以正常切换PHP版本

记一次下载在线电影的过程

第一步,在浏览器控制台的网络面板中,查看网络请求,主要对两个请求感兴趣,一是m3u8文件,一是ts文件,分别获得地址。

第二步,打开m3u8文件,可以看到里面其实是ts文件列表,程序循环下载这些ts文件。

第三步,执行下面的命令,其使用ffmpeg将下载的众多ts文件进行合并,获得output.mp4。

ffmpeg -i playlist.m3u8 -c copy -bsf:a aac_adtstoasc output.mp4

WampServer死活连不上SQLServer的解决办法

下载了Wamp Server 2.5,连接MSSQLServer 2008 R2,一直提示“Fatal error: Call to undefined function sqlsrv_connect()”。

网上的办法全都试过也还是不管用(包括ext目录中添加dll、php.ini添加dll设置、ntwdblib.dll加入system32等等)。

如果遇到类似以上问题并且山穷水尽的同学,可以往下看。

首先在此感谢解决原作者:https://blog.csdn.net/xocom/article/details/45840725

下面开始说问题原因和方法。

原因:

经测试,微软最新发布的microsoft Drivers 3.1 for PHP for SQL Server仅支持32位的php5.5版本,在win7 64位系统中安装32位wamp环境可以正常开启扩展,但是安装了64位的wamp环境就不能开启扩展,网上查发现很多人反应64位的扩展源码编译不出来。

也就是说,微软发布的DLL扩展在64位的wamp中不能用

解决办法:

下载以下安装包,找到x64目录中对应的DLL,放到你的php/ext目录下。

地址一:http://oa.jnszkj.com/ueditor/php/upload/file/20180622/1529665745721557.zip

地址二:http://www.weka.cc/ueditor/php/upload/file/20180622/1529665745721557.zip

再次感谢原作者!感谢CSDN!感谢百度!微软就不谢了。

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 后台就会看到成功构建的版本,提交审核就可以了!
这里写图片描述

OCX注册失败

问题一:模块加载失败 请确保该二进制文件在指定的路径中 找不到指定的模块。

解决方法:将项目配置属性—>常规—>MFC的使用 修改为在静态库中使用MFC。

问题二:模块已加载,但对DllRegisterServer.dll的调用失败,错误代码为xxxxx。

解决方法:以管理员模式来执行命令行。

Mac Xcode空间清理

原文地址:http://blog.csdn.net/cuihaiyang/article/details/56892799

128G存储空间已经剩下没多少了,必须得清理一下。

一层层查找发现~/Library/Developer目录占了15G, Xcode8占用了12G,拿它开刀。

1. 清理~/Library/Developer/CoreSimulator/Devices 该目录是存放模拟器,里面每个模拟器标识符代表一台设备,具体可见device_set.plist

关闭模拟器,执行命令

rm -rf ~/Library/Developer/CoreSimulator/Devices

删除Devices文件夹,下次启动会重新创建模拟器

2.清理~/Library/Developer/Xcode/iOSDeviceSupport 该目录是真机调试时产生的,删除后下次调试时会自动生成。

rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport

3.清理~/Library/Developer/Xcode/DerivedData 该文件夹存放项目的索引文件等,可以全部删除,或者删除不常用的项目,再次打开项目会自动生成。

4.清理~/Library/Developer/Xcode/Archives 该文件夹存放app打包生成的文件,可以删掉不需要的项目打包文件。

5.清理/Library/Developer/CoreSimulator/Profiles/Runtimes,该文件夹存放手动下载的Simulator。

清理后Xcode只剩下四百多兆大笑

React Native打包Android APK安装包出错: Original is here. The version qualifier may be implied.

React Native项目,用命令打包Android APK安装包,执行命令gradlew assembleRelease后,总是报如下错误:

/Users/liujin/Downloads/xxx/android/app/build/intermediates/res/merged/release/drawable-mdpi-v4/androidjs_imagebag_pageonei_wkt1.jpg: error: Duplicate file.

/Users/liujin/Downloads/xxx/android/app/build/intermediates/res/merged/release/drawable-mdpi/androidjs_imagebag_pageonei_wkt1.jpg: Original is here. The version qualifier may be implied.

解决办法:

用Android Studio打开android目录,找到res/drawable目录,把里面的图片文件都删掉(因为这些图片都是React Native自动生成的,所以删除即可)。再次重新执行gradlew assembleRelease命令就不会报错了。

 

附:《React Native安卓项目打包APK》

CentOS 6.5 yum install PostgreSQL 9.4

一、在/etc/yum.repos.d/CentOS-Base.repo 中的[base],[updates]中都增加:exclude=postgresql*

二、引入 PostgreSQL 9.4 Repository 官方的安装源

网址是: http://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-6.6-x86_64/pgdg-centos94-9.4-2.noarch.rpm

如果这个网址显示404 Not Found,可以进入到 http://download.postgresql.org/pub/repos/yum/9.4/redhat 目录之后,一步一步点进去,找到你要下载的那个rpm包的链接。

[plain] view plain copy

 print?

  1. rpm -Uvh http://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-6.6-x86_64/pgdg-centos94-9.4-2.noarch.rpm

三、安装

[plain] view plain copy

 print?

  1. yum install postgresql94 postgresql94-server postgresql94-contrib

四、初始化PostgreSQL数据库

[plain] view plain copy

 print?

  1. service postgresql-9.4 initdb

五、设置开机自启动

[plain] view plain copy

 print?

  1. service postgresql-9.4 start
  2. chkconfig postgresql-9.4 on

六、修改监听地址、端口

/var/lib/pgsql/9.4/data/postgresql.conf 中 把注释符号去掉,显示如下:

[plain] view plain copy

 print?

  1. listen_address=’*’
  2. port=5432

七、增加操作系统用户

[plain] view plain copy

 print?

  1. [root@wc1 ~]# adduser pgdbuser

八、创建postgresql数据库中的用户

在安装完postgresql数据库之后,会有一个默认的用户postgres,切换到postgres用户,然后执行psql命令,连接postgresql,然后再创建pgdbuser用户,最后退出

[plain] view plain copy

 print?

  1. [root@wc1 ~]# su – postgres
  2. -bash-4.1$ psql
  3. psql (9.4.11)
  4. Type “help” for help.
  5.                                         ^
  6. postgres=# create user pgdbuser  with superuser login password ‘pgdbuser’;
  7. CREATE ROLE
  8. postgres=# \q

 

九、修改/var/lib/pgsql/9.4/data/pg_hba.conf文件如下:

其中ident是linux系统下postgresql默认的local认证方式,通过操作系统用户映射的数据库用户,不需要输入密码,就可以登录。

而md5,不需要在操作系统层建立对应的同名的用户。

[plain] view plain copy

 print?

  1. # TYPE  DATABASE        USER            ADDRESS                 METHOD
  2. # “local” is for Unix domain socket connections only
  3. local   all             all                                     md5
  4. # IPv4 local connections:
  5. host    all             all             127.0.0.1/32            md5
  6. # IPv6 local connections:
  7. host    all             all             ::1/128                 md5

修改之后要重启服务:

[plain] view plain copy

 print?

  1. [root@wc1 Desktop]# service postgresql-9.4 restart
  2. Stopping postgresql-9.4 service:                           [  OK  ]
  3. Starting postgresql-9.4 service:                           [  OK  ]

十、登录postgresql

由于都是需要密码验证登录,所以当前os用户为root,需要指定登录的数据库、用户,然后按照提示输入密码后登陆。

接下来,创建数据库,显示当前数据库,切换到新建的库,创建表,插入数据,查询数据。

[plain] view plain copy

 print?

  1. [root@wc1 Desktop]# psql -d postgres -U pgdbuser
  2. Password for user pgdbuser:
  3. psql (9.4.11)
  4. Type “help” for help.
  5. postgres=# create database test;
  6. ERROR:  database “test” already exists
  7. postgres=# create database xxx;
  8. CREATE DATABASE
  9. postgres=# select current_database();
  10.  current_database
  11. ——————
  12.  postgres
  13. (1 row)
  14. postgres=# \c xxx
  15. You are now connected to database “xxx” as user “pgdbuser”.
  16. xxx=# create table tb(id int);
  17. CREATE TABLE
  18. xxx=# insert into tb values(1);
  19. INSERT 0 1
  20. xxx=# select * from tb;
  21.  id
  22. —-
  23.   1
  24. (1 row)
  25. xxx=#

如果把修改/var/lib/pgsql/9.4/data/pg_hba.conf,把第一个md5改成ident,那么登录时候,需要切换到上面创建的操作系统用户:pgdbuser,然后就可以直接登录。

[plain] view plain copy

 print?

  1. # TYPE  DATABASE        USER            ADDRESS                 METHOD
  2. # “local” is for Unix domain socket connections only
  3. local   all             all                                     ident
  4. # IPv4 local connections:
  5. host    all             all             127.0.0.1/32            md5
  6. # IPv6 local connections:
  7. host    all             all             ::1/128                 md5
重启服务。
登录:
[plain] view plain copy

 print?

  1. [root@wc1 Desktop]# psql -d postgres -U pgdbuser
  2. psql: FATAL:  Peer authentication failed for user “pgdbuser”
  3. [root@wc1 Desktop]# su – pgdbuser
  4. [pgdbuser@wc1 ~]$ psql -d postgres
  5. psql (9.4.11)
  6. Type “help” for help.
  7. postgres=# \c xxx
  8. You are now connected to database “xxx” as user “pgdbuser”.
  9. xxx=# select * from tb;
  10.  id
  11. —-
  12.   1
  13. (1 row)
  14. xxx=#

微信小程序中使用微信风格样式库-WeUI

原文地址:https://www.jianshu.com/p/f4e3212c9ca7

WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。包含button、cell、dialog、 progress、 toast、article、actionsheet、icon等各式元素。

WeUI

WeUI的官方演示地址是:https://weui.io/
WeUI的官方GitHub地址是:https://github.com/weui

WeUI最初是为HTML5的页面设计的样式库,现在微信小程序使用的样式机制也是css风格的样式机制(不过稍稍有些不一样的地方),WeUI理所当然的推出了WXSS版本。它的GitHub地址是:https://github.com/weui/weui-wxss

我们可以直接去Github上下载它的代码,也可以通过npm来方便的获取:

npm install weui-wxss

下载下来的代码中,包含了weui的源代码,以及一个基于weui的示例小程序:

示例小程序

里面包含了丰富的使用weui的示例代码,可以很好的学习weui提供的各个样式的使用。

我们可以通过微信web开发者工具来打开这个示例代码:

示例代码
button样式

你的小程序主要是通过在你的app.wxss中导入weui.wxss来导入WeUI的样式的:

@import "style/weui.wxss";

之后,就可以在小程序的各个地方使用WeUI中定义的样式了。

作者:一斤代码
链接:https://www.jianshu.com/p/f4e3212c9ca7
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。