我在命令行中输入的任何工匠命令都会抛出这个错误:
$ php artisan
<?
return array(
'DB_HOSTNAME' => 'localhost',
'DB_USERNAME' => 'root',
'DB_NAME' => 'pc_booking',
'DB_PASSWORD' => 'secret',
);
PHP Warning: Invalid argument supplied for foreach() in /home/martin/code/www/pc_backend/vendor/laravel/framework/src/Illuminate/Config/EnvironmentVariables.php on line 35
{"error":{"type":"ErrorException","message":"Undefined index: DB_HOSTNAME","file":"'/home'/martin'/code'/www'/pc_backend'/app'/config'/database.php","line":57}}
这只是在我的本地开发系统上,我最近安装了apache和php。在我的生产系统上的共享主机上,工匠命令工作得很好。 prod系统有自己的.env.php,但除此之外代码应该是相同的。
相关文件:.env.local.php
<?
return array(
'DB_HOSTNAME' => 'localhost',
'DB_USERNAME' => 'root',
'DB_NAME' => 'pc_booking',
'DB_PASSWORD' => 'secret',
);
app/config/database.php
<?php
return array(
'fetch' => PDO::FETCH_CLASS,
'default' => 'mysql',
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => $_ENV['DB_HOSTNAME'],
'database' => $_ENV['DB_NAME'],
'username' => $_ENV['DB_USERNAME'],
'password' => $_ENV['DB_PASSWORD'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
'migrations' => 'migrations',
),
);
$_ENV数组在网站上按预期填充-问题似乎只与artisan有关。
所以我终于想出了如何解决它。事实证明,该文件没有作为php文件处理,因为我在.env.local.php文件中使用了一个简短的开始标记。使用正常的开始标签解决了这个问题。我不知道为什么,因为短标签在其他地方也很好。