未找到 Laravel 助手类
Posted
技术标签:
【中文标题】未找到 Laravel 助手类【英文标题】:Laravel helper class not found 【发布时间】:2013-09-02 04:59:11 【问题描述】:我已经添加了
app_path().'/classes',
到 ClassLoader::addDirectories 数组中的 global.php。在 app/classes/helpers/Url.php 我有:
<?php namespace Helpers;
class Url
public static function prep($str)
if ($str == 'http://' OR $str == '')
return '';
$url = parse_url($str);
if ( ! $url OR ! isset($url['scheme']))
$str = 'http://'.$str;
return $str;
然后在一个视图中我有:
html::link(Helpers\URL::prep($place->url), $place->url, array('target' => '_blank'))
这在本地运行良好,但在我的服务器上出现错误:找不到类“Helpers\URL”。我尝试通过these steps,但它也没有工作。有什么想法吗?
【问题讨论】:
你运行 composer dump-autoload 了吗? 是的,但由于它没有加载到作曲家中,它没有做任何事情。我什至在 composer 中添加了 classes 目录,然后转储,仍然得到相同的结果。Class Url
或 Class URL
?
但是在 composer.json - 在“autoload”/“classmap”下 - 你添加了“app/classes”吗?
当您尝试在 global.php 中使用 app_path()
加载类时,namespace
将不起作用。如果你需要 namespace
那么你必须使用 composer.json 自动加载。
【参考方案1】:
我关注https://***.com/a/17091089/1454622(他的“选项 1”,我更喜欢)。
我遇到了同样的问题,它在我的本地服务器上运行,但在我的远程服务器上却没有。 这是我的应用/存储上的目录和文件权限问题。我的遥控器需要这些(感谢@elliotyap):
1) 我的助手类在app/libs
中,所以我在composer.json
文件的autoload
部分中添加了:"app/libs",
2)php composer.phar dump-autoload
它还需要一些权限更改:
3)sudo chgrp THE_SERVERS_WEB_SERVER_USER_HERE app/storage
【讨论】:
【参考方案2】:好的,我发现了问题。我将“app/classes/helpers”重命名为“app/helpers”,然后将新的 app/helpers 添加到 composer.json 和 global.php 并运行 composer dump。查看一些 PHP 文档,似乎 PHP 有时会在目录和命名空间中使用“类”、“类”或其他保留类型字时遇到问题。我仍然不确定为什么这是在本地工作,但不是在服务器上。
【讨论】:
你可能有区分大小写的问题。 对不起,没有。如上述评论所述。我尝试了两种方法,但仍然遇到相同的错误,只是在不同的情况下。 当我将路径添加到 global.php 时,我的助手没有加载任何服务器,而是加载到另一台服务器,然后我添加到 composer.json 并执行转储自动加载,它们现在可以工作了。【参考方案3】:在 config/app.php 的 aliases
数组中定义您的 Helper 外观,如下所示
'Helper' => 'Helpers\Url'
那你就可以Helper::prep()
【讨论】:
我刚试过这个,我仍然得到同样的错误,只是先加载了框架中的更多代码。以上是关于未找到 Laravel 助手类的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5 未找到类“Illuminate\Html\HtmlServiceProvider”
未找到 Laravel 5 类“Illuminate\Support\Facades\FormFacade”
laravel 类 'GuzzleHttp\Client' 未找到