以下是我用于在CentOS服务器上部署php应用程序的部署脚本的摘录。
echo "Starting Deployment to $SITE_FOLDER (Relase Directory: $RELEASE_DIR)..." svn --username=$SVN_USER export $REPOSITORY $DEPLOY_FOLDER/releases/$RELEASE_DIR echo "CHMOD 755 of Release Directory" chmod 755 -R $DEPLOY_FOLDER/releases/$RELEASE_DIR echo "Making Symbolic Link." ln -nfs $DEPLOY_FOLDER/releases/$RELEASE_DIR/ $DEPLOY_FOLDER/public_html
我在一个成功的类似环境中使用了它。 我把这个设置在一个新的服务器上,并且在删除之前,文件apache从public_html提供了很好的文件。
现在,它通过符号链接服务,PHP文件都扔500错误。 非.php文件正在服务正常。
我已经尝试将目录作为不同的Apache用户和不同的权限,但似乎没有任何工作。 有任何想法吗? 预先感谢您的帮助!
您需要添加FollowSymlinks指令,例如:
<Directory /usr/local/httpd/htdocs> Options Indexes FollowSymLinks </Directory>
我有同样的问题,suPHP是罪魁祸首。 符号链接始终是777,而suPHP强制执行755,并将引发500错误。
它可以是任何东西,所以最好的,如果你检查Apache错误日志(在500你总是会有一些错误)。
通常情况下,Apache遵循链接,但它可能有SymLinksIfOwnerMatch (而不是FollowSymLinks ),所以你必须确保你正在访问的文件和文件夹( index.php & public_html )有合适的所有者(所有者匹配)和权限不是太宽( public_html应该是755 )。
如果您的权限类似于664,则可能会出现此错误:
Application.cpp中的SoftException:256:文件“/home/foo/public_html/index.php”可由组写入
所以这可能有所帮助:
chown $USER public_html public_html/index.php chmod 755 public_html
因为你处理的是总是777的符号链接,但是没关系,因为从来没有使用符号链接的权限。 更改目标文件夹的权限应该可以正常工作。