V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kisshere
V2EX  ›  问与答

php 用 exec 调用外部命令时,返回 127 错误码是什么意思?

  •  
  •   kisshere · 2015-01-27 23:23:55 +08:00 · 7727 次点击
    这是一个创建于 3566 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务器centos,因为需要调用phantomjs,已经安装了phantomjs的二进制文件,并且,在putty上尝试了phantomjs --version能正常输出:1.9.8,然后试了下:
    exec("phantomjs --version", $o, $e);
    echo $e;//返回127
    很纳闷,再试了下:
    exec("ls", $o, $e);
    echo $e;//还是返回127
    谷歌很久,有的人说要采用绝对路径,遂再试了下:
    exec("/usr/bin/ls", $o, $e);
    echo $e;
    我快疯了,还是不行,求大神解答,这个exec函数到底该杂用
    7 条回复    2017-01-18 23:30:28 +08:00
    msg7086
        1
    msg7086  
       2015-01-27 23:35:56 +08:00 via iPhone
    你的ls存在哪?
    haozhang
        2
    haozhang  
       2015-01-27 23:40:10 +08:00 via iPad
    which ls 或者where is ls,看看ls在哪里。
    kisshere
        3
    kisshere  
    OP
       2015-01-27 23:44:48 +08:00 via Android
    @msg7086
    @haozhang
    谢谢,先不管ls这个命令,我是想调用phantomjs,我找到了phantomjs二进制文件所在的文件夹,在exec函数里加了这个文件的绝对路径,返回码还是127,快绝望了,咋办
    msg7086
        4
    msg7086  
       2015-01-27 23:47:27 +08:00 via iPhone
    @kisshere 安全模式?权限?chrooted?
    kisshere
        5
    kisshere  
    OP
       2015-01-28 00:05:17 +08:00 via Android
    safe_mode=off,权限和chroot什么意思?
    yangg
        6
    yangg  
       2015-01-28 11:06:33 +08:00
    127是文件 找不到,node找不到应该是

    $path = getenv('PATH') ? PATH_SEPARATOR.getenv('PATH') : '';
    putenv("PATH=/usr/local/bin$path");
    jiangle
        7
    jiangle  
       2017-01-18 23:30:28 +08:00
    我想问最后解决了吗?我也遇到 127 这个问题了 @kisshere
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:37 · PVG 00:37 · LAX 09:37 · JFK 12:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.