tp5 使用 exec() 返回127 的解决

6 篇文章 0 订阅

骚嘿!又是你,搬砖搬得怎样了;唉,快和国宝有得比了,真烦人!

先写一个测试文件 test.php,放在与入口文件的同目录下

访问:http://你的域名/test.php

<?php
    //exec("ls",$out,$status);
    exec("php -v 2>&1",$out,$status);
    print_r($out);
    echo " - ";
    print_r($status);

1、本地测试没问题;(终端:php -v ,访问:http://域名/test.php)

2、远程终端命令执行也没问题;

3、远程访问(http://你的域名/test.php)返回:Array ( [0] => sh: php: command not found ),测试 ls 命令却可以正常输出

检查:

1、查看配置文件 php.ini ;safe_mode=off,disable_functions 里没有禁用 exec() 和 system() 等函数;

2、文件权限打开,用户权限打开;

3、启动方式:由 Apache 转为 Nginx;

服务器环境:CentOS7,小皮(thinkPHP)面板V1.27,php7.3.8/php7.1.31

最终还是不行,上帝已死,请相信自己,在崩溃中站起才是真正的勇士!

在网上查询: linux下的exec命令;

看到了这句话:shell的内建命令exec将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。 

没办法,小时候上学,语文考试都在及格线上徘徊,这把我吓的,脸差点青白!

最后折腾的,我实在没法子了,那就掀桌子吧!

先把项目备份,数据备份;然后,到服务器上重新安装镜像系统 CentOS7,去宝塔安装个面板:

# Centos安装脚本 
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

1、选择环境:Nginx,php7.3.8,MySQL5.7,phpMyAdmin 4.9

2、在宝塔面板上添加站点,把项目上传到对应的文件夹下,数据文件上传到新建的数据库里,检查用户名和密码是否一致;

3、在面板站点里设置网站目录,伪静态,ssl等等;

4、如果项目的入口文件index.php 是在 /public下的,修改 .user.ini 文件:

open_basedir=/www/wwwroot/happycommon.top/public:/tmp/
# 改为:
open_basedir=/www/wwwroot/happycommon.top/:/tmp/

5、打开配置文件 php.ini ;把 disable_functions 里面禁用 exec 函数去掉;

远程访问(http://你的域名/test.php),最后测试成功!

别问我为什么?因为所以,我也不清楚!

但肯定的是,上帝已死,只能靠自己;想靠打野帮你抓,先想好自己的补刀和对线的人头,猥琐发育,别浪!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逸曦穆泽

您的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值