我刚刚将我的网站内容从 Plesk 迁移到 CentOS 5.5 x64 LAMP VPS 上的 Cpanel。我遇到的问题是一些 php 文件可以工作,而其他则不行。例如,当前 index.php 文件正在运行 find 并运行 phpinfo() 并返回结果 - 如果我创建一个新的 test.php 文件并从 index.php 复制并粘贴完全相同的代码,则会导致出现“内部服务器错误”消息。
有人能提供任何帮助吗?这种情况发生在我的所有域中,在一个案例中,没有 php 文件可以工作。
标准.html 文件都可以正常工作,这导致我怀疑我的 php 安装有问题?
以下是从日志中摘录的 2 段示例:
日志的一些摘录 - “[2010 年 10 月 21 日星期四 20:03:45] [错误] [客户端隐] Application.cpp 中的 SoftException:363: 脚本的 GID“/home/隐/public_html/test.php" 小于 min_gid [2010 年 10 月 21 日星期四 20:03:45] [错误] [客户端隐] 脚本头提前结束:test.php”
“[2010 年 10 月 21 日星期四 20:05:46] [错误] [客户端 80.255.223.242] Application.cpp:431 中的 SoftException:文件“/home/trades/public_html/index.php”的目标 GID(507)和 GID(10)不匹配[2010 年 10 月 21 日星期四 20:05:46] [错误] [客户端 80.255.223.242] 脚本标头过早结束:index.php”
答案1
我非常确定这将是一个 suphp 错误。检查工作文件和错误文件之间的所有权差异,从中可以得到启发。
答案2
/home/trades/public_html/index.php 的组与预期组不同。请检查 /etc/group 中的预期组
cat /etc/group | grep 507 | awk -F":" {'print $1'}
然后运行
chgrp correct-group-name /home/trades/public_html/index.php
然后确保此文件和 public_html 下的其他文件的权限不高于 755,并且所有者/组是
答案3
听起来你的新服务器使用了 suPHP,而你的旧服务器没有。另外,你对权限和/或所有权的处理不够严谨。这里有一个方便的小脚本可以修复它。这个特定的代码是我凭空想出来的,所以我还没有测试过。欢迎随时进行更正。不过,这个理论是合理的:我在客户服务器上经常使用类似的东西。
将其保存为脚本,使其可执行,并传入您想要修复的用户名。
#!/bin/bash
die() { echo $* >&2; exit 1; }
USER=$1
# sanity checks
[[ -z $USER ]] && die "Please supply a user name"
[[ -d /home/$USER/public_html/ ]] || die "Username is not found"
[[ -d /home/$USER/tmp/ ]] || die "tmp dir not found... are you sure this is cpanel?"
G=$(stat --format=%G /home/$USER/public_html/)
[[ $G == "nobody" ]] || die "public_html not owned by group nobody? WTF?"
#change ownership of stuff
chown -R --reference=/home/$USER/tmp /home/$USER/public_html
chgrp nobody /home/$USER/public_html
#remove o/g write permission
chmod -R go-w /home/$USER/public_html
echo "You're all set, boss"