让 Laravel 5 使用 xampp for OSX

Posted

技术标签:

【中文标题】让 Laravel 5 使用 xampp for OSX【英文标题】:Get Laravel 5 working with xampp for OSX 【发布时间】:2015-04-25 01:00:41 【问题描述】:

我已经在 this tutorial for installing Laravel 4 之后安装了 Laravel 5,并使用 php 的内置服务器在 localhost:8888 上启动并运行了一个测试站点,正如教程在 5:05 处解释的那样。

我想实现类似的目标,但通过 xampp 以 http://localhost/laravel 或类似的根为站点提供服务。我这样做的原因是我在 xampp 中设置了许多其他项目和数据库,现在我想保持我的开发环境一致。

我正在使用 PHP 版本 5.4.30 运行 OSX Mavericks,我的编辑器是 Coda 2。我在 xampp 中创建了一个 mysql 数据库,并将必要的详细信息添加到我的项目 .env 文件中,但无法显示该站点。

更新: 显然,为该站点提供服务,我所要做的就是在 xampp 上重新启动我的服务器,并将 /public 添加到我的根 URL 的末尾以查看该站点。但是现在我面临另一个问题。当我尝试迁移数据库时...

php artisan migrate

我没有任何效果,但以下消息吐出......

exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:47
Stack trace:
#0 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(47): PDO->__construct('mysql:host=loca...', 'laravel-user', 'YdVNRS5fDbJMLh6...', Array)
#1 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(20): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=loca...', Array, Array)
#2 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/storage/framework/compiled.php(10598): Illuminate\Database\Connectors\MySqlConnector->connect(Array)
#3 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/storage/framework/compiled.php(10594): Illuminate\Database\Connectors\ConnectionFactory->createSingleConnection(Array)
#4 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/storage/framework/compiled.php(10512): Illuminate\Database\Connectors\ConnectionFactory->make(Array, 'mysql')
#5 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/storage/framework/compiled.php(10467): Illuminate\Database\DatabaseManager->makeConnection('mysql')
#6 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php(167): Illuminate\Database\DatabaseManager->connection(NULL)
#7 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php(135): Illuminate\Database\Migrations\DatabaseMigrationRepository->getConnection()
#8 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(371): Illuminate\Database\Migrations\DatabaseMigrationRepository->repositoryExists()
#9 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(101): Illuminate\Database\Migrations\Migrator->repositoryExists()
#10 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(54): Illuminate\Database\Console\Migrations\MigrateCommand->prepareDatabase()
#11 [internal function]: Illuminate\Database\Console\Migrations\MigrateCommand->fire()
#12 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/storage/framework/compiled.php(922): call_user_func_array(Array, Array)
#13 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Console/Command.php(115): Illuminate\Container\Container->call(Array)
#14 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Console/Command.php(101): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/symfony/console/Symfony/Component/Console/Application.php(874): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/symfony/console/Symfony/Component/Console/Application.php(195): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Migrations\MigrateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/symfony/console/Symfony/Component/Console/Application.php(126): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(91): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /Applications/XAMPP/xamppfiles/htdocs/laravel-test/artisan(36): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 main

有人知道如何解决这个问题吗?

谢谢

【问题讨论】:

您在寻找这样的东西吗? laravel.io/forum/… @MalteKöhrer 感谢您的链接,这很有帮助。我刚刚使用了错误的路径,但是我仍然无法使数据库连接正常工作。我为我的问题添加了更多细节。 【参考方案1】:

我在 Stack Overflow 的其他地方找到了 this answer,它为我解决了这个问题。我所要做的就是将unix_socket 行添加到我的database.php 文件的mysql 部分......

'mysql' => [
        'driver'    => 'mysql',
        'unix_socket'   => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

而且效果很好。

【讨论】:

Awesome ... 。在 CentOS 上使用 /opt 目录中的 XAMPP 时遇到了类似的问题。添加行'unix_socket' => '/opt/lampp/var/mysql/mysql.sock',事情看起来很光明。谢谢!

以上是关于让 Laravel 5 使用 xampp for OSX的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 5.6 项目中使用 xampp 的虚拟主机中的别名

未找到 xampp 对象中的 Laravel 5.2

php artisan migrate 不适用于 Laravel 5.4 中的 XAMPP

无法连接到 laravel 5.6 中的数据库 xampp

在 XAMPP Linux 中安装 Laravel 5.3

htaccess for laravel 在所需文件夹中