【问题标题】:aws ec2 php exec sudo not workingaws ec2 php exec sudo 不工作
【发布时间】:2016-09-17 15:57:30
【问题描述】:

我们正在尝试使用 php 在 aws ec2 ubuntu 实例上自动化网站部署。

所以要在 aws ec2 ubuntu 实例上部署网站,我们必须遵循以下步骤

  1. 在 www 文件夹中创建文件夹
  2. 使 conf 文件站点可用
  3. 执行 a2ensite
  4. 重启apache
  5. 创建数据库
  6. 创建用户并授予所有访问权限

我正在尝试使用 PHP 做所有事情。所以我坚持执行以下代码的第一步

echo shell_exec("sudo mkdir /var/www/{$_POST['environment']} 2>&1");
echo shell_exec("sudo mkdir /var/www/{$_POST['environment']}/{$_POST['site']}/public_html 2>&1");
echo shell_exec("sudo mkdir /var/www/{$_POST['environment']}/{$_POST['site']}/ssls 2>&1");
echo shell_exec("sudo mkdir /var/www/{$_POST['environment']}/{$_POST['site']}/conf 2>&1");
echo shell_exec("sudo mkdir /var/www/{$_POST['environment']}/{$_POST['site']}/sqls 2>&1");

但出现以下错误

sudo: no tty present and no askpass program specified

我搜索了一些替代方案(在我的脑海中)

  1. 将密码设置为 sudo(在 google 上没有得到任何信息)
  2. 使用 PHP 库连接 ec2(库可用但不知道如何执行命令)

提出任何建议。

【问题讨论】:

  • 您使用的是什么用户? root 还是别的什么?
  • @error2007s,我正在使用 php,所以它的 www:data 在 whoami 中。你问的是这个吗?
  • 对于什么命令你会得到这个错误? sudo: 没有 tty 并且没有指定 askpass 程序
  • @error2007s, sudo: no tty present and no askpass program specified 是错误

标签: amazon-ec2 ubuntu-14.04 lamp sudo aws-sdk


【解决方案1】:

该错误表明脚本需要向用户询问 sudo 的密码,但它不能。您可以允许运行 php 命令的用户在没有密码的情况下执行 sudo。请参阅此相关的answer 或搜索如何在没有密码的情况下允许 sudo,您会发现很多指南。

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 2011-12-14
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 2010-11-09
    相关资源
    最近更新 更多