【问题标题】:Exec /usr/bin/latex执行 /usr/bin/latex
【发布时间】:2011-05-14 01:27:17
【问题描述】:

当我尝试以下 PHP 代码时: exec('/usr/bin/latex ...') 我会得到一个 127 退出代码。我能做些什么来阻止这种情况?

问候, 凯文

【问题讨论】:

  • 剩下的论点是什么?
  • '/usr/bin/latex --interaction=nonstopmode ' . $texFile
  • 命令的输出是什么?它应该描述您遇到的问题。
  • 尝试重新路由输出以便 php 可以看到它,您可能会收到更好的错误消息: exec('/usr/bin/latex --interaction=nonstopmode ' . $texFile . ' 2>&1' , $输出); print_r($output);
  • 没什么,我执行了 exec('..', $a, $b) 并且这些变量在执行后包含 127 和 Array()(空)。

标签: php latex exec


【解决方案1】:

127 错误代码表示 bash 未找到该命令。你确定安装了 Latex 吗?

【讨论】:

  • 是的,当我回显代码并手动(以root身份)执行时,它可以执行。
  • @Kevin, /usr/bin/latex 的权限是什么? www-data 用户或您的 apache 实例运行的任何人是否有权执行?
  • 0777,www-data,我猜是这样,因为它是 0777?
  • 我会非常担心每个人都可以写的可执行文件。哦等等,可能是符号链接,和真实文件的权限不同?
【解决方案2】:

为什么不用ssh2?

类似这样的:

//Connect first
if (!($con = @ssh2_connect('192.168.0.1', 22))) {

    echo "[FAILED_CONNECT]\n";
    exit(1);

}

if (!@ssh2_auth_password($con, "your_user", "your_password")) {

    echo "[FAILED_AUTH_DENIED]\n";
    exit(1);

}
echo "[OK]\n CONNECTED!";


// the command line
$stdout_stream = ssh2_exec($con, "/usr/bin/latex ...");


// close connection
fclose($stdout_stream);

【讨论】:

  • 为什么要使用 ssh 连接到 localhost?
  • @SVICK 它在哪里说本地主机????之后请阅读第一个反对票,但如果不理解这一点,请不要向任何人投反对票.. 太好了!
  • exec() 在当前计算机上执行代码,所以它隐含地表示 localhost。无需尖叫。
  • 192.* 是本地主机 ;)。此外,您的大写锁定已开启。
  • @KEvin Er...192.168.*.* 是本地 C 类网络,但不一定是 localhost。现在,127.*.*.* 是本地主机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2016-09-12
  • 2016-10-19
  • 2013-10-14
  • 2019-04-11
  • 2016-01-22
  • 1970-01-01
相关资源
最近更新 更多