“找不到对象!” OSX、Silex 和 XAMPP 开发环境
Posted
技术标签:
【中文标题】“找不到对象!” OSX、Silex 和 XAMPP 开发环境【英文标题】:"Object Not Found!" OSX, Silex and XAMPP development environment 【发布时间】:2017-02-04 10:25:36 【问题描述】:我整天都在为设置 php/mysql 环境而苦苦挣扎,我想我终于可以寻求帮助了。
我已经启动并运行了 XAMPP。为了在我喜欢的目录中工作,我更新了/Applications/XAMPP/xamppfiles/etc/httpd.conf
:
User MY_USERNAME
...
DocumentRoot "/Users/PATH/TO/WORKING/DIR/web"
<Directory "/Users/PATH/TO/WORKING/DIR/web">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/trunk/mod/core.html#options
# for more information.
#
#Options Indexes FollowSymLinks
# XAMPP
Options Indexes FollowSymLinks ExecCGI Includes
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
#AllowOverride None
# since XAMPP 1.4:
AllowOverride All
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
否则我的 httpd.conf
设置是 XAMPP 默认值。在我的web
目录中,我有 index.php:
<?php
require_once __DIR__."/../vendor/autoload.php";
$app = new Silex\Application();
$app->get("/", function ()
return "Hello World";
);
$app->get("/test", function ()
return "Success";
);
$app->run();
?>
如果我转到localhost
,我会得到预期的“Hello World”。但是,如果我去 localhost/test
我会得到:
找不到对象!
在此服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。
如果您认为这是服务器错误,请联系网站管理员。
错误 404
本地主机 Apache/2.4.23 (Unix) OpenSSL/1.0.2h PHP/5.6.24 mod_perl/2.0.8-dev Perl/v5.16.3
这是一个非常简化的示例,但说明了问题。
我已针对此错误搜索了 Google 结果,但推荐的建议都没有帮助:
很多人建议我更新.htaccess
,但我不知道它在 XAMPP 中的什么位置,或者我应该在哪里创建它,或者我应该在其中放入什么或它是什么。
在httpd.conf
中将AllowOverride None
更改为AllowOverride All
的建议似乎不起作用。 (在确认没有帮助后,我将其恢复为默认设置)
任何帮助将不胜感激!感谢您的宝贵时间!
解决方案
我在/Users/PATH/TO/WORKING/DIR/todo
中创建了.htaccess
,我需要将它放在我指向XAMPP 的/Users/PATH/TO/WORKING/DIR/todo/web
中。然后在.htaccess
里面我把Silex告诉我的东西放进去:http://silex.sensiolabs.org/doc/master/web_servers.html
【问题讨论】:
你需要重写。似乎您希望 localhost/test 成为对 index.php 的调用。到目前为止,我在您的配置中看不到任何会导致 apache 以这种方式做出反应的东西。 .htaccess 文件位于可通过您的 apache 配置访问的任何文件夹中,请参见例如。 httpd.apache.org/docs/current/howto/htaccess.html 这样你就可以控制重写了。 【参考方案1】:.htaccess
需要在您的 Web 应用程序的根目录下,所以在 web
中。如果它不存在,请创建它。它应该包含这里指出的内容http://silex.sensiolabs.org/doc/master/web_servers.html
AllowOverride All
确实需要,但如果您的网络应用程序文件夹中没有任何.htaccess
文件,那么它的工作机会为 0。
【讨论】:
这成功了!当我需要输入/PATH/project_folder/web
时,我已经将 .htaccess 文件放入了 /PATH/project_folder
中,我猜是我将 XAMPP 指向的地方。谢谢!
如果它解决了您的问题,请考虑投票并接受答案(只要 *** 允许您这样做):-)
赞成并接受(虽然我的赞成票还没有被 Stack Overflow 计算在内)以上是关于“找不到对象!” OSX、Silex 和 XAMPP 开发环境的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS 和 Silex 的 CORS 问题(PHP - Apache)
使用 Silex/SilexExtensions 和 Assetic 在 Twig 中动态 CSS/Javascript