今天我用Zend Framework创建了我的第一个项目,但是当我尝试连接到我的项目时,我只看到"500内部服务器错误"。我在 httpd.conf 文件中添加了一些新行:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot C:'AppServ'www'data1'public
ServerName my_ip
</VirtualHost>
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot C:'AppServ'www'data1'public
ServerName http://my_ip
</VirtualHost>
这是我的htaccess文件:
RewriteEngine On
#RewriteBase data1/public/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
RewriteRule !'.(js|ico|gif|jpg|png|css|swf|html|pps)$ index.php [NC,L]
order allow,deny
allow from all
我阅读了有关此问题的更多主题,但现在问题尚未解决。
这是我的错误.log文件(来自服务器):
[Wed Aug 08 01:46:02 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
PHP Warning: PHP Startup: Unable to load dynamic library 'C:/AppServ''php5 ''ext''php_exif.dll' - 'xd3'xea'xe0'xe7'xe0'xed'xe0'xf2'xe0 'xef'xf0'xee'xf6'xe5'xe4 'xf3'xf0'xe0 'xed'xe5 'xe5 'xed'xe0'xec'xe5'xf0'xe5'xed'xe0.'r'n in Unknown on line 0
[Wed Aug 08 01:46:02 2012] [notice] Apache/2.2.8 (Win32) PHP/5.2.6 configured -- resuming normal operations
[Wed Aug 08 01:46:02 2012] [notice] Server built: Jan 18 2008 00:37:19
[Wed Aug 08 01:46:02 2012] [notice] Parent: Created child process 2392
[Wed Aug 08 01:46:02 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
[Wed Aug 08 01:46:02 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
PHP Warning: PHP Startup: Unable to load dynamic library 'C:/AppServ''php5''ext''php_exif.dll' - 'xd3'xea'xe0'xe7'xe0'xed'xe0'xf2'xe0 'xef'xf0'xee'xf6'xe5'xe4'xf3'xf0'xe0 'xed'xe5 'xe5 'xed'xe0'xec'xe5'xf0'xe5'xed'xe0.'r'n in Unknown on line 0
[Wed Aug 08 01:46:02 2012] [notice] Child 2392: Child process is running
[Wed Aug 08 01:46:02 2012] [notice] Child 2392: Acquired the start mutex.
[Wed Aug 08 01:46:02 2012] [notice] Child 2392: Starting 64 worker threads.
[Wed Aug 08 01:46:02 2012] [notice] Child 2392: Starting thread to listen on port 80.
[Wed Aug 08 01:46:15 2012] [alert] [client 46.40.124.225] C:/AppServ/www/data1/public/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
感谢您发布错误日志。
从外观上看,您没有加载mod_rewrite
。
找到您的httpd.conf
文件并找到以下行:
#LoadModule rewrite_module modules/mod_rewrite.so
从行首删除#
符号。
接下来,向httpd.conf
添加一个如下所示的新部分:
<Directory "C:/AppServ/www/data1/public">
Options FollowSymLinks
AllowOverride All
</Directory>
AllowOverride
指令很重要。 默认情况下,除非允许,否则不会处理.htaccess
文件。 此行允许.htaccess
该命名目录中的文件。
进行这些更改后,重新启动 Apache,然后再次尝试加载 ZF 页面。
首先,更好的调试。加
ErrorLog "PATH_TO/zfapp-error_log"
CustomLog "PATH_TP/zfapp-access_log" combined
到您的虚拟主机。重新启动 apache 并重新加载您的页面。文件将在指定的路径中创建。将有一个确切的错误消息,将帮助您进一步调试。
我刚刚遇到了完全相同的问题,drew010 的解决方案确实解决了它!
但是,似乎 Apache 配置结构发生了变化,因此启用缺失模块的方法略有不同:
$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/rewrite.load ./rewrite.load
这确认了您有正确的内容:
$ cd /etc/apache2/mods-enabled
$ cat ./rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
干杯!