【问题标题】:Executing shell script outside of webroot from php从php在webroot之外执行shell脚本
【发布时间】:2015-04-11 07:34:16
【问题描述】:

我在 webroot 之外的以下目录中有一个 shell 脚本:

 /usr/share/myshellscript.sh

并且我希望能够在从位于以下位置的 php 文件调用时运行它:

 /var/www/html/myphpscript.php

如何将 php 脚本导航到可以运行 shell 脚本的正确目录?

我试过了:

 exec('/usr/share/myshellscript.sh');

但是什么都没有发生?

我已经在服务器本身上测试了 .sh 脚本,它工作正常,只是无法让 php 执行它。

系统:Ubunutu 14.04 网络服务器/php 5.5.9-1

【问题讨论】:

  • 需要添加命令吗? IE。 exec('sh /usr/share/myshellscript.sh');
  • 不,我只需要执行脚本。 .sh 只是将一些文本回显到 .txt 文件脚本中,看看我是否可以让它工作。
  • 你能从终端运行确切的命令吗,即。你可以运行'/usr/share/myshellscript.sh'还是需要运行'sh /usr/share/myshellscript.sh'?
  • 是的,我可以使用 /usr/share/myshellscript.sh 从终端运行它,它可以工作
  • 我也尝试了这个线程的所有可能,但没有任何效果? stackoverflow.com/questions/16740802/…

标签: php shell ubuntu exec


【解决方案1】:

很可能,您没有执行 .sh 脚本的权限。要确保脚本可读且可执行,请运行:

$scriptPath = '/usr/share/myshellscript.sh';
var_dump(array(
    'file' => is_file($scriptPath),
    'readable' => is_readable($scriptPath),
    'executable' => is_executable($scriptPath)
));

另一个可能的原因是 exec() 函数在 PHP 中被禁用。 见“Check if "exec" is disabled

【讨论】:

  • 好的,我已经取得了“一些”进展。这似乎是一个权限错误。如果 .sh 脚本只是回显一些文本“我的文本”,它可以正常工作,但是一旦我尝试做其他任何事情(比如将“mytext”回显到新的 txt 文件),它就会引发权限错误。我已经确定 .sh 脚本所在的目录,.sh 脚本本身和 webroot 中的 php 文件都属于同一个用户和用户组 - www-data,但仍然没有乐趣.. 我知道这是一种非常不安全的方法,因此如果有人能提出更安全的方法,我将不胜感激。
猜你喜欢
  • 2013-06-13
  • 2016-07-02
  • 2013-06-28
  • 2016-10-19
  • 1970-01-01
  • 2011-12-06
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多