【发布时间】:2014-05-30 02:32:13
【问题描述】:
我是 PHP 新手,遇到了一些问题。
我正在使用 EasyPHP(DevServer 14.1 -> PHP 5.5.8 和 Apache 2.4.7)和 CakePHP (2.5.1)。
好吧,如果我将 CakePHP 文件放在“C:\Program Files\EasyPHP\data\localweb\”(那么它将是“C:\Program Files\EasyPHP\data\localweb\cake_2_0...”例如),它可以正常工作,因为它应该。
问题是:我想在 EasyPHP 上使用别名,因为我不想在“C:\Program Files...”进行开发。但是,当我将 CakePHP 文件放在我的应用程序根目录时(例如,“C:\myapps\myproject...”,在 EasyPHP 上设置了别名),然后我得到一个“错误 404”。现在,我发现如果我从根目录中删除 .htaccess 文件,它就可以工作。但我确信这个文件是出于某种原因存在的,所以我觉得只是删除它是不对的——以后可能会给我带来更多问题。
有人知道吗?如果我想使用 CakePHP,我可以在 EasyPHP 上使用别名吗? 提前致谢。
已编辑
这是我的 apache_alias.conf (C:\Program Files\EasyPHP-DevServer-14.1VC11\data\conf):
Alias "/cakeblogtutorial" "C:/Programacao/PHP/workspace/CakeBlogTutorial"
<Directory "C:/Programacao/PHP/workspace/CakeBlogTutorial">
Options FollowSymLinks Indexes
AllowOverride All
Order deny,allow
Allow from 127.0.0.1
Deny from all
Require all granted
</Directory>
这是我的 .htaccess (C:\Programacao\PHP\workspace\CakeBlogTutorial):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
在我的 httpd.conf (C:\Program Files\EasyPHP-DevServer-14.1VC11\binaries\conf_files) 上,关于 mod_rewrite(换句话说,未注释):
LoadModule rewrite_module modules/mod_rewrite.so
error.log 的最后几行 (C:\Program Files\EasyPHP-DevServer-14.1VC11\binaries\apache\logs):
[Mon Jun 02 14:27:48.093057 2014] [:error] [pid 4284:tid 848] [client 127.0.0.1:62831] script 'C:/Program Files/EasyPHP-DevServer-14.1VC11/data/localweb/index.php' not found or unable to stat
[Mon Jun 02 14:34:59.319532 2014] [mpm_winnt:notice] [pid 1992:tid 312] AH00424: Parent: Received restart signal -- Restarting the server.
[Mon Jun 02 14:34:59.982390 2014] [mpm_winnt:notice] [pid 1992:tid 312] AH00455: Apache/2.4.7 (Win32) PHP/5.5.8 configured -- resuming normal operations
[Mon Jun 02 14:34:59.982390 2014] [mpm_winnt:notice] [pid 1992:tid 312] AH00456: Apache Lounge VC11 Server built: Nov 21 2013 20:13:01
[Mon Jun 02 14:34:59.982390 2014] [core:notice] [pid 1992:tid 312] AH00094: Command line: 'C:\\PROGRA~1\\EASYPH~1.1VC\\binaries\\apache\\bin\\eds-httpd.exe -d C:/Program Files/EasyPHP-DevServer-14.1VC11/binaries/apache'
[Mon Jun 02 14:34:59.988391 2014] [mpm_winnt:notice] [pid 1992:tid 312] AH00418: Parent: Created child process 6588
[Mon Jun 02 14:35:01.279844 2014] [mpm_winnt:notice] [pid 6588:tid 364] AH00354: Child: Starting 64 worker threads.
[Mon Jun 02 14:35:01.523147 2014] [mpm_winnt:notice] [pid 4284:tid 364] AH00364: Child: All worker threads have exited.
access.log 的最后几行 (C:\Program Files\EasyPHP-DevServer-14.1VC11\binaries\apache\logs):
127.0.0.1 - - [02/Jun/2014:15:09:50 -0300] "GET /cakeblogtutorial HTTP/1.1" 301 242
127.0.0.1 - - [02/Jun/2014:15:09:50 -0300] "GET /cakeblogtutorial/ HTTP/1.1" 404 1156
【问题讨论】:
-
您的 404 应该在 apache 的日志中有描述,以便了解出了什么问题。你也不要显示你的别名配置文件,不要说你是否启用了mod_rewrite,如果你检查了权限,它可以是很多东西。
-
@user221931 按照您的建议,我添加了更多信息。你现在有什么线索吗?我真的对配置几乎一无所知...
-
这有帮助,但它看起来不像 apache 的错误配置错误。请在您的消息中添加应用程序的日志 (
C:/Programacao/PHP/workspace/CakeBlogTutorial/tmp/log/error.log)。 -
@user221931 文件 error.log (C:\Programacao\PHP\workspace\CakeBlogTutorial\app\tmp\logs) 为空。我一直在寻找答案,我发现了一个类似错误的建议,将 RewriteBase /cakeblogtutorial 行放在 .htaccess 文件上。我已经尝试过了,它奏效了。但同样,我不确定这样做是否正确。我很高兴我找到了一种可行的方法,但不满意,因为以后可能会再次出错。
-
我不确定,但我认为正确的 Windows 目录路径包含反斜杠。
标签: .htaccess cakephp http-status-code-404 easyphp