【问题标题】:php path on heroku doesnt works in execheroku上的php路径在exec中不起作用
【发布时间】:2013-07-18 05:33:14
【问题描述】:

我在 Heroku 上获得了一些 PHP 应用程序。在启用 PHP 的同时,我还运行了这个命令,I've found somewhere at Stackoverflow:

heroku config:add LD_LIBRARY_PATH=/app/php/ext:/app/apache/lib
Setting config vars and restarting zfq... done, v7
LD_LIBRARY_PATH: /app/php/ext:/app/apache/lib

命令行中的这个命令可以正常工作:

heroku run ./php/bin/php -v
Running `./php/bin/php -v` attached to terminal... up, run.3208
PHP 5.3.10 (cli) (built: Mar 26 2012 08:15:52)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

但是这段代码:

$nickname = $_POST['nickname'];
$filename = "1.txt";
$cmd      = './php/bin/php -v > "' . $filename . '" 2>&1 &';

exec($cmd, $output);
$contents = file_get_contents($filename);
unlink($filename);

exit_ajax($contents);

返回sh: ./php/bin/php: not found

如果我将 ./php/bin/php 更改为 ~/php/bin/php - 它会返回 false

./php - 返回sh: ./php: not found

【问题讨论】:

  • 请确认放置的链接是您从中获得该链接的位置。然后请解释为什么你具体添加了它,它有什么作用?然后请告诉您是在您的机器上本地执行该代码还是在 Heroku 上执行该代码。另外我已经删除了多余的代码,请检查。也请说出你的问题是什么。如果我可能会问,您为什么认为 ./php/bin/php 是 PHP 二进制文件?
  • 在我的本地主机上,只需 php -v ... 命令就可以正常工作。在终端,使用 Heroku 工具带,./php/bin/php 也有效(实际上我不知道为什么,因为 ./ 在开头,告诉在当前文件夹中查找 php/bin 文件夹)。我的问题是 - 为什么从终端相同的命令有效,而从 php exec - 它没有。 5 分钟前,我终于找到了 php 二进制文件的正确路径 - 它是 ../php/bin/php。这个pastebin.com/6rURR0M3 垃圾代码有效。现在我试图猜测,为什么完全相同的代码,但在 ajax 请求中,不起作用。但这实际上是另一个问题。
  • 对不起,我不明白你写给我的链接和表格。
  • 链接是:stackoverflow.com/questions/13792556/… - 从您的 PHP 脚本中尝试 PHP 二进制文件的完整路径。如果你说../php... 有效,那么完整路径是相对于你调用它的脚本(或来自apache,取决于一点)。尝试了解更多信息。

标签: php heroku path exec


【解决方案1】:

效果很好

$cmd = "/app/php/bin/php -v " ...

【讨论】:

  • 给我sh: ./app/php/bin/php: not found
  • 这很奇怪,我给了你绝对路径,没有前导点
  • 嗯,我已经复制粘贴了,但现在我在那里看到了一个点......无论如何,没有点它什么都不返回,空字符串。命令是'/app/php/bin/php -v > "' . $filename . '" 2>&1 &'
  • btw,看来是先写再读命令输出,直接用输出可能会更好
  • 首先它正在运行一些脚本,它会解析一些 url 并将一些数据写入该文件。它在本地主机上运行良好,但是当我将其上传到 heroku 时,麻烦就开始了。所以我尽可能地简化和注释代码,最后删除旧命令并放置一些测试输出。
【解决方案2】:

使用 /app/php/bin/php 而不是 ./app/php/bin/php

两者是不同的,因为后者将在文档根目录中搜索 /app 文件夹,即 /app/www/,因此不会在 /app/www/ 中找到 app 文件夹

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2017-01-18
    • 1970-01-01
    • 2016-03-16
    • 2021-09-26
    • 2019-08-23
    • 2013-03-24
    相关资源
    最近更新 更多