Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel自定义帮助程序-未定义的索引服务器\u名称_Php_Laravel_Laravel 5.1 - Fatal编程技术网

Php Laravel自定义帮助程序-未定义的索引服务器\u名称

Php Laravel自定义帮助程序-未定义的索引服务器\u名称,php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,在Laravel5.1中,我创建了一个自定义帮助文件:custom.php,我将其加载到composer.json: "autoload": { "files": [ "app/Helpers/custom.php" ] }, 它包含以下方法: function website() { return str_replace('dashboard.', '', $_SERVER['SERVER_NAME']); } 它按预期工作,但每次我执行php ar

在Laravel5.1中,我创建了一个自定义帮助文件:
custom.php
,我将其加载到
composer.json

"autoload": {
    "files": [
        "app/Helpers/custom.php"
    ]
},
它包含以下方法:

function website() {
    return str_replace('dashboard.', '', $_SERVER['SERVER_NAME']);
}
它按预期工作,但每次我执行
php artisan
命令时,我都会收到一个调用堆栈和以下消息:

Notice: Undefined index: SERVER_NAME in /path/to/custom.php on line 4

为什么会这样?从my Laravel应用程序中运行时,该方法返回正确的值。

Artisan在命令行上工作,因此没有服务器名称。使用类似于:

Request::server('SERVER_NAME', 'UNKNOWN')

而不是$\u SERVER[]来提供默认值以避免错误。

可能是因为当您像往常一样运行此帮助程序时,服务器名称中包含了一些内容,因为您是从浏览器运行它的


运行Artisan命令时,没有任何服务器,这就是服务器名称为空的原因。

$\u服务器['server\u NAME']全局变量仅在通过浏览器运行应用程序时才可访问。当您通过PHPCLI/通过终端运行应用程序时,它会遇到一个错误。将代码更改为

function website() {

    if(php_sapi_name() === 'cli' OR defined('STDIN')){
        // This section of the code runs when your application is being runned from the terminal
        return "Some default server name or you can use your environment to set your server name"
    }else{
        // This section of the code run when your app is being run from the browser
        return str_replace('dashboard.', '', $_SERVER['SERVER_NAME']);
    }
}

希望这对您有所帮助。

在您的composer中使用此代码
composer dump autoload-o
我收到
致命错误:未找到类“请求”
。我现在只想
isset($\u SERVER['SERVER\u NAME'])
)Thanks@Obay-您可能需要在控制器中“使用请求;”,最好在可以保持一致性的地方使用Laravel代码/语义。我这样做了,但它说
第3行的/path/to/custom.php中带有非复合名称“Request”的use语句无效。所以我添加了
namespace-App\Helpers但这打乱了我的其他助手函数,代码的其他部分再也找不到它们。@Obay-我假设您使用的是名称空间,所以可能需要\Request::server()(猜测,因为我总是使用名称空间),您需要添加
使用illumb\Support\Facades\Request虽然它没有达到我的目的,但它是一种很好的方法,可以解决许多其他问题。