在旧工程里有很多文件是使用了短标签标记php片段
但默认安装的php环境,现在都把短标签关闭
php.ini 里
short_open_tag = OFF


文件里如果有短标签的代码,会不解析的
所以可以做一次批量替换
<\?(?!php|=) 替换成 “注意留个空格,防止 这样的语句
sublime下可以直接替换,命令行sed貌似不支持 ?!修饰符
有一个之前的旧项目需要在新环境运行,发现提示mysql函数没有定义
引用
Fatal error: Uncaught Error: Call to undefined function mysql_connect()


新环境是 PHP Version 7.1.11,之前的php项目都是5.2的,所以代码算是旧家伙了,官方自php5.3开始一直推荐mysqli 和 pdo 。
打印phpinfo看,的确没有mysql的函数,取而代之是mysqli、mysqlnd和pdo

mysqli,mysqlnd,pdo到底是什么:
引用
MYSQL:This extension is deprecated as of PHP 5.5.0, and has been removed as of PHP 7.0.0.
MYSQLI: MySQL Improved Extension
MySQLND: MySQL Native Drive
PDO:The PHP Data Objects。extension defines a lightweight, consistent interface for accessing databases in PHP。


以上摘自 PHP官方手册: http://php.net/manual/en/book.mysqli.php

MYSQL 也叫 Original MySQL,PHP4版本的MYSQL扩展,从PHP5起已经被废弃,并从PHP7开始已经被移除。
MYSQLI 叫做 “MySQL增强扩展”。
MYSQLND MYSQL NATIVE DIRVER 叫做MYSQL “官方驱动”或者更加直接点的叫做“原生驱动”
PDO PHP Data Objects PHP数据对象,是PHP应用中的一个数据库抽象层规范。

项目要跑起来,可以适当修改就正常运行

1 数据库链接


//mysql
$link = mysql_connect('127.0.0.1', 'user', 'password');
if (!$link) {
    echo 'Could not connect: ' . mysql_error();
}else{
  mysql_query("set names 'utf8'");
  mysql_select_db("data");
}

//mysqli
$link = mysqli_connect('127.0.0.1', 'user', 'password');
if (mysqli_connect_errno()) {
    echo 'Could not connect: ' . mysqli_connect_errno();
}else{
  $link->query("set names 'utf8'");
  $link->select_db("data");
}


2 读取数据


//mysql
$sql = "select * from users order by ctime desc";
$qr = mysql_query($sql);
$users = array();
while( $task = mysql_fetch_assoc($qr) ){
  $users[] = $task;
}

//mysqli
$sql = "select * from users order by ctime desc";
$qr = $link->query($sql);
$users = $qr->fetch_all(MYSQLI_ASSOC); //直接获取所有数据


本来定义好letsencrypt每个月更新的,结果发现并没有完成更新。
手动更新,发现是网络故障,无法更新软件,导致证书无法正常更新。

引用
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py", line 246, in _error_catcher
    raise ReadTimeoutError(self._pool, None, 'Read timed out.')
ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out.


这只能翻了,有socks5的访问可以用,但命令行只有http代理,所以需要转换一下:

yum install privoxy

安装好后,增加配置
vi /etc/privoxy/config

增加两行:
listen-address  10.0.0.3:8118
forward-socks5   /               127.0.0.1:7070 .


service privoxy restart

然后要记得开启socks5服务
命令行单独使用,可以在访问网络前,执行这个

http_proxy=10.0.0.3:8118
https_proxy=10.0.0.3:8118
export http_proxy https_proxy


正常了
引用
Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。


对于个人网站或者要求一般的网站都适合用Let's Encrypt的免费证书,安装简单。

主要步骤:
1 安装环境
2 申请证书
3 配置nginx
4 定期更新证书

1 安装环境

yum -y install git python
cd /Data/apps/
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto —-help


正常来说,运行最后一个没有出错就算没有问题啦

2 申请证书

首先你需要在你的网站根目录生成一个检查授权的目录,然后命令行直接申请证书
mkdir -p /Data/webapps/www.aslibra.com/.well-known/acme-challenge


配置nginx可以通过80端口访问到
server
{
    listen       80;
    server_name  www.aslibra.com aslibra.com test.aslibra.com;
    location /.well-known {
        root   /Data/webapps/www.aslibra.com/;
    }
    location / {
        rewrite ^/(.*)$ https://www.aslibra.com/$1 redirect;
    }
}


申请证书:
/Data/apps/letsencrypt/letsencrypt-auto certonly \
--webroot --email youremail@gmail.com \
-w /Data/webapps/www.aslibra.com \
-d www.aslibra.com \
-d aslibra.com \
-d test.aslibra.com

email是用来通知你证书过期的提醒
-d是同一个网站的各个域名,可以一起申请

申请成功会有提示:
引用
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.aslibra.com/fullchain.pem. Your cert
   will expire on 2017-09-16. To obtain a new or tweaked version of
   this certificate in the future, simply run letsencrypt-auto again.
   To non-interactively renew *all* of your certificates, run
   "letsencrypt-auto renew"
- If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le


3 配置nginx

server
{
    listen 443;
    ssl on;

    ssl_certificate /etc/letsencrypt/live/www.aslibra.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.aslibra.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/www.aslibra.com/chain.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 60m;

    server_name  www.aslibra.com aslibra.com test.aslibra.com;

#...


4 定期更新证书

创建一个脚本:
/Data/scripts/letsencrypt-renew.sh

#!/bin/bash
/Data/apps/letsencrypt/letsencrypt-auto renew
/Data/apps/nginx/sbin/nginx -s reload


定时任务加上:
0 23 28 * * root /Data/scripts/letsencrypt-renew.sh >>/Data/logs/letsencrypt.log


每个月28号运行一次,因为证书有效期是2个月,所以一个月更新一次即可
折腾过一两天,结果最后还是使用一键安装的方案解决的:

https://github.com/quericy...

因为ios10不支持之前的vpn了,所以需要用新的协议
安装过程不多说,按照步骤处理即可,主要说一些注意的事项:

1 ca.cert.pem证书需要导入才能使用

Mac电脑可以下载后点击安装,自己生成的是不可信的
安装后,在密钥管理里找到 VPN CA,双击查看,选择信任,始终信任

iPhone需要放服务器下载用safari打开或者通过邮件
打开文件后会提示安装,确认即可,安装此证书后,建立vpn才正常

2 iphone新建vpn即可,填写相关数据,文章介绍的苹果配置文件的方式貌似怎么样都不行

多谢互联网的精彩分享
分页: 2/134 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐