Php Laravel 4:控制器不工作,仅HomeController

Php Laravel 4:控制器不工作,仅HomeController,php,laravel,Php,Laravel,我在使用L4的项目中遇到了一个奇怪的错误 因此,如果我在HomeController.php上有以下内容: public function Hi() { echo 'simple test'; } 然后在路线上呼叫: Route::get('hi', array('as' => 'hi', 'uses' => 'HomeController@Hi')); 它很好用 但是,如果我在controllers文件夹上创建一个名为MemberController.php的新控制器,并

我在使用L4的项目中遇到了一个奇怪的错误

因此,如果我在HomeController.php上有以下内容:

public function Hi()
{   
echo 'simple test';
}
然后在路线上呼叫:

Route::get('hi', array('as' => 'hi', 'uses' => 'HomeController@Hi'));
它很好用

但是,如果我在controllers文件夹上创建一个名为MemberController.php的新控制器,并执行完全相同的Hi函数,当我尝试调用它时:

Route::get('hi', array('as' => 'hi', 'uses' => 'MemberController@Hi'));
它返回

BadMethodCallException
Method [Hi] does not exist.
我真的不知道这是怎么回事。我以前在L4的其他项目上工作过,有很多控制器,但这从未发生过


这台服务器运行的是Nginx而不是Apache,所以没有htaccess,但我认为这没有任何区别。L4已更新为最新版本。有什么想法吗?

对于linux,请打开\etc\hosts中的这一行

yourserverip   yourlaravel.com
我认为您的虚拟主机没有在httpd.conf中设置。您可以尝试一下,看看它是否有效: 对于Linux

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName yourlaravel.com
    DocumentRoot "/var/www/laravel/public"
    <Directory "/var/www/laravel/public">
 </Directory>

<VirtualHost *:80>
   ServerName localhost
   DocumentRoot "/var/www"
   <Directory "/var/www">
   </Directory>
</VirtualHost>

对于linux,打开\etc\hosts并将其放在这一行

yourserverip   yourlaravel.com
我认为您的虚拟主机没有在httpd.conf中设置。您可以尝试一下,看看它是否有效: 对于Linux

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName yourlaravel.com
    DocumentRoot "/var/www/laravel/public"
    <Directory "/var/www/laravel/public">
 </Directory>

<VirtualHost *:80>
   ServerName localhost
   DocumentRoot "/var/www"
   <Directory "/var/www">
   </Directory>
</VirtualHost>

我已经找到了问题的解决方案,它与文件权限有关

通过SSH安装Laravel时,它拥有完整的写/读权限,包括HomeController.php。在此之后,创建其他用户以仅访问laravel安装,这样就不需要权限,从而导致该用户在controllers文件夹上创建的任何文件都没有被正确读取


我想这仅仅是一个解释——我不是Linux专家,所以我希望我没有说错什么——但一旦我给了用户权限,它就开始工作了。

我找到了解决问题的方法,它与文件权限有关

通过SSH安装Laravel时,它拥有完整的写/读权限,包括HomeController.php。在此之后,创建其他用户以仅访问laravel安装,这样就不需要权限,从而导致该用户在controllers文件夹上创建的任何文件都没有被正确读取


我想这仅仅是一个解释——我不是Linux专家,所以希望我没有说错什么——但一旦我给了用户权限,它就开始工作了。

你使用Unix或windows?运行Nginx@Ubuntu。Ubuntu是Ubuntu@的一个版本,从表面上看,它没有理由不工作。。也许可以发布更多的上下文?@crayon暴力我也没有看到任何错误,但我只是发现了问题所在。这与linux文件权限有关-显然无法读取另一个文件-不同的所有者。现在似乎解决了!你使用的是Unix还是windows?运行Nginx@Ubuntu。Ubuntu是Ubuntu@的一个版本,从表面上看,它没有理由不起作用。。也许可以发布更多的上下文?@crayon暴力我也没有看到任何错误,但我只是发现了问题所在。这与linux文件权限有关-显然无法读取另一个文件-不同的所有者。现在似乎解决了!如果这是一个问题,那么为什么他的其他控制器会工作呢?VirtualHost不适用于NGINX,它适用于Apache 2。好的,但是。htaccess不会在您创建新路由/控件时更新。这不是路由/控制器的工作方式。如果Acache/.htaccess出了问题,那么他的任何东西都不会工作。还有,@AntonioCarlosRibeiro说的话。我没有投反对票,我很少投反对票,但我怀疑投反对票是因为antonio的评论谢谢你@Crayon violent如果这是问题,那么为什么他的另一个控制器会工作呢?VirtualHost不是为NGINX,而是为Apache 2。好的,但是,每当你创建一个新的路由/控件时,.htaccess不会更新,而这不是路由/控制器的工作方式..如果Acache/.htaccess被搞砸了,他的任何东西都不会工作。还有,@AntonioCarlosRibeiro说的话。我没有投反对票,我很少投反对票,但我怀疑是因为安东尼奥的评论谢谢你@Crayon