我正在使用Illuminate库在Slim框架中开发一个应用程序。我正在尝试使用Illuminate \ Database \ Capsule \ Manager创建与数据库的连接。一些如何,它不承认'addConnection'语句。这是我的完整代码。如果有人能够指出我哪里出错了,那将非常有帮助。
require 'lib/vendor/PHPMailer/PHPMailerAutoload.php';
require 'lib/init.php';
require 'lib/Slim/Slim.php';
date_default_timezone_set('UTC');
use lib\Slim\Middleware\SessionCookie;
\Slim\Slim::registerAutoloader();
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;
$capsule->addConnection(array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mydatabase',
'username' => 'myusername',
'password' => 'mypassword',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
));
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;
$capsule->setEventDispatcher(new Dispatcher(new Container));
// Make this Capsule instance available globally via static methods... (optional)
$capsule->setAsGlobal();
// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
$capsule->bootEloquent();
$app->run();
这是脚本停止并且应用程序进入“未响应”状态的地方。
$ capsule-> addConnection(阵列( 'driver'=> “MySQL的, 'host'=> 'localhost' 的, 'database'=> 'MYDATABASE', 'username'=> '名为myUsername', 'password'=> '我的密码', 'charset'=> “UTF-8”, 'collation'=> 'utf8_unicode_ci', 'prefix'=> ', ));
我一遍又一遍地检查了我的数据库详细信息,它们是100%正确的。任何人都可以指出可能导致它的原因吗?
更新
经过测试,我发现该页面在任何错误的声明中都会出现错误http 500。例如,如果我忘记在语句的末尾添加分号,则会进入500.这表明错误可能是除SQL以外的其他错误。有没有办法启用调试,所以它向我显示错误的原因。我或许可以从那里追踪它?
更新
我启用了调试功能。它给了我以下错误:
调用未定义的函数Illuminate \ Support \ value()
答案 0 :(得分:2)
"进入'没有回应'状态&#34。 这似乎更像是没有回复'来自MySQL服务器。我会投票支持无效的主机名。尝试使用127.0.0.1更改localhost。另外(如果支持)最好使用mysqli(而不是mysql驱动程序)。
因为如果它冻结约30-60秒,则在出现任何超时错误之前是超时设置。你有没有?
此外,对于“新鲜的”' Eloquent用法的例子,你可以在这里找到:https://github.com/mattstauffer/Torch(如果你使用的是laravel 4.2,你应该将分支切换到4.2以用于旧例子)
答案 1 :(得分:0)
可能你缺少包括 Illuminate \ Support \ helpers.php ,其中函数 value()被定义为
if (! function_exists('value')) {
/**
* Return the default value of the given value.
*
* @param mixed $value
* @return mixed
*/
function value($value)
{
return $value instanceof Closure ? $value() : $value;
}
}