PHP调用gpg加密命令不执行
PHP调用gpg加密命令不执行,在命令行下可以执行。exec返回值是2。
1 | php: |
$resultval 返回值为:2,*$output* 为空,不能加密文件。
1 | shell: |
shell 命令行下可以执行。
可能原因:
1、php调用时找不到公钥存储的位置。
2、php以是非root权限运行的,不能成功执行gpg命令。
我用的解决办法(不一定是对的或最好的解决方式,但是暂时解决了问题):
方法如下:
1、新建C程序文件 gpgen.c ,代码如下:
1 |
|
2、把上面的文件生成可执行程序:
1 | shell: |
3、再用PHP调用这个生成的可执行程序,代替直接调用gpg命令:
1 | php: |
这样就可以解决问题了。
解决php里fopen、file_get_content、get_headers不能解析域名问题
原因一:-with-curlwrapper PHP编译参数
1. 解决PHP里FOPEN不能解析域名
2. file_get_contents returns empty string
3. php无法解析域名问题
4. php file_get_contents 不能获得内容
1 | I fixed this issue on my server (running PHP 5.3.3 on Fedora 14) by removing the --with-curlwrapper from the PHP configuration and rebuilding it. |
解决办法:
重新编译PHP,去掉 -with-curlwrapper 参数,编译前记得先执行 make clean。
原因二:/etc/resolv.conf PHP用户没有这个文件的访问权限
给 /etc/resolv.conf 设置访问权限:
1 | chmod 755 /etc/resolv.conf |
执行后重启 nginx、php。