php - 如何在实时服务器上使用 sudo 运行 php exec

标签 php laravel centos digital-ocean

我有一个简单的脚本,可以为每个注册的用户创建文件夹,它在本地工作得很好,但在推送到实时服务器后它不起作用......我发现它需要 sudo密码。我四处搜索,所有人都建议我应该通过运行 visudo 来编辑 sudoer,但没有任何效果。

 $sudoPassword = \Config::get('app.sudoPassword');

 $sudo = "echo $sudoPassword | sudo -S ";

 $createDir =  "cd ../../merchants && mkdir ".$merchant->identity." && cd ".$merchant->identity;

echo exec($createDir);

我的问题是,我应该如何让 exec 以 root 身份运行?我在 digitalocean 中使用 centOS

最佳答案

我不建议将脚本运行为 sudo .更好的选择是授予 Web 服务器(www-data 用户)写入 ../../merchants 的权限。目录。

首先将自己添加到 www-data通过运行以下命令进行分组。

usermod -a -G www-data <your-username>

然后给出 merchants 的所有权文件夹到 www-data使用以下命令进行分组。
chgrp www-data merchants

最后给予 merchants 正确的权限使用以下命令的文件夹。
chmod g+rwxs merchants

希望这可以帮助您解决问题。

编辑

在 CentOS 上,您应该使用 apache而不是 www-data .

关于php - 如何在实时服务器上使用 sudo 运行 php exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60376585/

相关文章:

Laravel 空白项目..这么多文件!可以以某种方式减少吗?

php - Laravel 数据库连接 sql 或数组连接

linux - 将 Parallels Plesk Panel 从版本 9.3.0 升级到 11.0.9(最新版本)

php - 如何删除 float 小数部分末尾的零?

php - 根据前导字符是否存在分割字符串

php - 如何在数据表中包含 Drupal 表单元素

php - 通过 php 函数动态添加表单字段作为 "array"而不是值

methods - "Method [show] does not exist"是什么意思?

memory - CentOS 中的随机 Inode/Ram 缓存丢失

php - libvirt-php 收到错误 : internal error Unable to locate libvirtd daemon in/usr/sbin