1

我们与大约 230 个客户一起运行 CentOS WHM/cPanel VPS,其中大多数客户使用我们自己的 CMS 软件。该软件内置了版本控制和更新,但由于各种原因,它没有在我们的部分网站上激活,因此我无法将它用于我想要推出的更新。

我正在寻找某种方法从一个位置获取一个新的(在此示例中)updates.php,并为服务器上的每个用户替换 public_html/admin/updates.php 中存在的任何其他updates.php。

对于拥有它的 VPS 上的每个用户,需要更新的文件位于相同的重播路径(即 /home/[USERNAME]/public_html/admin/updates.php)。显然,因此任何没有它的用​​户都需要被跳过(以避免在整个地方创建 updates.php 文件。

我们的 PHP 也设置为在 SuExec 下运行,所以我不能简单地编写一个 PHP 脚本并运行它——所以假设它需要通过某种 shell——这绝对不是我擅长的。也就是说,我确实有 root 访问权限,所以可以根据需要在那里做任何事情。

喜欢听听您的想法/解决方案,显然很乐意回答任何问题。

4

2 回答 2

1

像这样写一个shell脚本

for i in /home/* ; do
  if [ -d "$i" ]; then
    echo "found $i"
          if [ -f "$i/public_html/admin/updates.php" ]; then
            cp /home/updates.php $i/public_html/admin/updates.php
          fi
  fi
done

首先如果检查目录,即检查所有用户目录。然后在每个目录中检查更新文件是否存在。如果是这样,请将文件 /home/updates.php (你应该放在哪里)复制到那里。

编辑:将代码放入文件applyUpdate.sh中,用于chmod +x applyUpdate.sh使其可执行,然后使用./applyUpdate.sh

于 2013-01-05T11:56:10.227 回答
0

如果此文件的名称是 upgrade.php,并且这是您的用户目录中唯一的 upgrade.php,请考虑使用此文件:

find /home/ -name upgrade.php -exec cp -p /path/to/new_upgrade {} \;
于 2013-01-05T12:09:24.943 回答