【发布时间】: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,取决于一点)。尝试了解更多信息。