分类 默认分类 下的文章

事情是这样:nginx 反向代理 php-fpm, php脚本中使用php-redis,实例化Redis对象,并connect本地的redis服务器。本地root账号运行php xxx.php是没有问题的,结果使用http访问时报Permission denied。
如果不提示错误,有可能是php.ini的配置项display_errors是关闭的。

最终找到原因是selinux的安全设置。可以用这个getsebool -a | grep httpd 查看到
httpd_can_network_connect --> off

可以通过下述命令修改
SELinux命令,临时配置,重启后失效
setsebool httpd_can_network_connect=1

写入配置文件的命令,重启后保留
setsebool -P httpd_can_network_connect 1

其它配置项参考 https://wiki.centos.org/zh/TipsAndTricks/SelinuxBooleans

虚机无法联外网场景下需要安装npm包,找到这个办法:

  1. 在本地安装npm-bundle
    npm install -g npm-bundle
  2. 在本地安装使用npm-bundle下载需要的npm包及依赖,如需要安装json-server, 一个伪server提供api测试场景。https://github.com/typicode/json-server
    npm-bundle json-server, 执行上述命令后会在当前文件目录新建 json-server-0.15.0.tgz
  3. 上传json-server-0.15.0.tgz到虚机中,执行安装
    npm install -g ./json-server-0.15.0.tgz

done.

python3 适用,执行shell命令

使用subprocess

import subprocess

def run(args):
    out = subprocess.Popen(args, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=True)
    stdout, stderr = out.communicate()
    return stdout

print(run(['ls', '-l']))

使用os.system

import os
os.system('ps -ef')

使用os.popen

import os
os.popen('ls')

jsonpath的语法

符号描述
$查询的根节点对象,用于表示一个json数据,可以是数组或对象
@过滤器断言(filter predicate)处理的当前节点对象,类似于java中的this字段
*通配符,可以表示一个名字或数字
..可以理解为递归搜索,Deep scan. Available anywhere a name is required.
.<name>表示一个子节点
[‘<name>’ (, ‘<name>’)]表示一个或多个子节点
[<number> (, <number>)]表示一个或多个数组下标
[start:end]数组片段,区间为[start,end),不包含end
[?(<expression>)]过滤器表达式,表达式结果必须是boolean

- 阅读剩余部分 -