我们的服务器同时运行网站的开发版和产品版。我有一个 bash 脚本,一旦我 sudo 就可以从 CLI 运行,但我不能从实例之间的用户差异的 PHP b/c 运行。例如...如果我想比较我们的 home.css,我可以从 cli 执行此操作:
diff -U 0 /home/devsite/www/_css/home.css /home/prodsite/www/home.css | grep -c ^@
如果它们相同,它将返回 0,如果它们不同,它将返回非零。
在 PHP 中,我尝试这样做:
<?php
$dev_home = "/home/devsite/www";
$prod_home = "/home/prodsite/www";
$old_version = $dev_home .'/_css/home.css';
$new_version = $prod_home .'/_css/home.css';
$output = shell_exec("diff -U 0 $old_version $new_version | grep -c ^@");
echo "<pre>$output</pre>";
即使我知道文件不一样,它也总是返回 0。如果我进入 CLI 并 su 到“devsiteuser”帐户,这是当我从 PHP 运行“whoami”并运行顶部 CLI 语句时显示的内容,我看到我没有权限访问 /home/ 中的文件产品/
我得到了这个问题,但我不确定解决方案。我应该对不同的用户执行 sudo 还是可以更改某种权限以允许它进行比较?