尊敬的专家和大师,我正在寻找一些帮助与apache php配置问题。
我已经在ubuntu服务器上运行了几个网站从apache2设置一段时间了,现在使用我的etc/apache2/conf.d/virtual.conf文件中的NameVirtualHost *没有问题。我最近将服务器版本更新到最新的lts版本,现在我无法运行php文件。
我正在运行我的所有网站的位置"/home/www/[site-name]/htdocs",我已经设置并启用了我的所有网站在/etc/apache2/sites-available。我还禁用了默认站点。
对于每个站点文件,我指定了以下内容:
# Indexes + Directory Root.
# DirectoryIndex index.html index.htm index.php
DocumentRoot /home/www/[site-name]/htdocs/
# CGI Directory
ScriptAlias /cgi-bin/ /home/www/[site-name]/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
# Logfiles
ErrorLog /home/www/[site-name]/logs/error.log
CustomLog /home/www/[site-name]/logs/access.log combined
我重新启动apache并在我的服务器上输入php测试页面的url,我遇到了"内部服务器错误"。当我检查错误日志时,我得到:
脚本"/home/www/[site-name]/htdocs/test.php"解析为"/home/www/[site-name]/htdocs/test.php"不在配置的目录中。
由于某些原因,在查看错误时,suphp出现了很多次。根据这个链接:
不要误以为这与Apche虚拟主机文档的根目录有关,这实际上是supp配置文件中的另一个设置。包括包含RoundCube脚本的路径修复了这个问题。例如:docroot =/var/www:/usr/share/roundcube:/var/lib/roundcube: ${回家}/public_html
您需要编辑您的/etc/suphp/suphp.conf
文件,并将docroot
更改为适当的内容
看起来您错过了每个站点名称的虚拟主机配置:
<VirtualHost IP:80>
ServerName yourdomainname
ServerAlias www.yourdomainname
DocumentRoot /home/www/[site-name]/htdocs/
ScriptAlias /cgi-bin/ /home/www/[site-name]/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
ErrorLog /home/www/[site-name]/logs/yourdomainname.ua-error.log
CustomLog /home/www/[site-name]/logs/yourdomainname-access.log combined
</VirtualHost>
<Directory "/home/www/[site-name]/htdocs/">
Options FollowSymLinks
AllowOverride None
Order allow,deny
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
谢谢大家的帮助,我终于做到了。升级到Ubuntu 10.04似乎打开了suPHP。它最终成为一件好事,因为我得到错误的原因是我的htdocs中的文件管理变得草率。
为了解决我的问题,我不得不做几件事:
首先,我在/etc/apache2/sites-available/[site-name]中打开了suphp错误消息。这给了我一个真正的错误,它告诉我我的一些页面有错误的权限。然后我将www中的所有文件夹权限设置为755,文件设置为644。我还必须将suphp.conf中的min_uid和min_gid字段降低到33。