【问题标题】:Run shell command in PHP from MAMP从 MAMP 在 PHP 中运行 shell 命令
【发布时间】:2013-11-28 19:47:29
【问题描述】:

我已经在我的 OSX 上安装了 MAMP,并尝试从我的 php 文件运行 shell 命令,但似乎我无法访问终端或命令没有发送到终端。

$cmd = "some shell command"
$output = shell_exec($cmd);
if($output == null)
    echo "returned null";
else echo $output;

我总是得到“返回 null”,并且没有执行 shell 命令。该命令是正确的,如果我复制“一些 shell 命令”并将其粘贴到终端中,该命令将被执行。我在 Windows 中测试过相同的文件,命令行是从 php 执行的,这个问题只出现在 mac。那么如何在mac中访问终端呢?

PS:

  • OSX 10.6.8
  • MAMP 2.0.5
  • PHP 5.3.6

【问题讨论】:

  • 你希望你的命令返回什么? shell_exec() 在错误或无输出时返回 null。
  • 我放输出来测试结果,我只想执行命令

标签: php macos bash shell mamp


【解决方案1】:

Windows/Mac/Linux 操作系统的工作方式存在很大差异。在 Windows 中 shell_exe 命令已经提供了访问权限。即使用户在 Windows 中资源有限,也可以执行 shell_exe 命令。

对于 Mac/Linux 操作系统,运行 shell_exe 命令有很多限制。强烈建议不要使用 PHP 的 shell_exe 命令。主机很容易成为目标。您必须编辑 PHP.INI 才能为用户提供 shell_exe 访问权限。

如果您不是 Mac/Linux 主机的管理员,请要求机器管理员这样做。如果,管理员提供访问权限,那么您不必尝试其他方式,这取决于您的项目要求。

编辑 PHP.INI

哪个是正确的用于编辑的 PHP.INI 文件取决于机器使用的操作系统。位置一般根据需要的东西而变化。

如果您使用的是 WHM CPanel,那么它就变得不那么容易了。 php.ini文件的大致位置

 /usr/local/lib

如果您使用任何其他第 3 方程序,该位置通常会更改为

/usr/local/cpanel/3rdparty/etc/php.ini

【讨论】:

  • 那么在mac中运行shell命令的安全做法是什么?它是我网页中使用 shell 命令的必要部分。
  • 我在 php.ini 中找不到 shell_exec,我也禁用了 php.ini 中没有参数的函数
  • @fareed 也回答了你的问题
  • @fareed 你找到执行 shell_exec 的任何解决方案了吗?
  • @Akhtar 是的!我有。更改您的 php.ini 以提供对 shell 的访问权限
猜你喜欢
  • 2015-07-17
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多