我正在尝试设置一个FuelPHP应用程序,我遇到了一个令人费解的问题。每次应用程序试图连接到数据库,我得到以下错误:
FuelCoreDatabase_Exception [ Error ]: invalid data source name
我已经将FUEL_ENV设置为Apache的VirtalHost配置中的"stage",fuel/app/config/staging/db.php
中的数据库凭据似乎是正确的:我可以使用相同的用户名和密码登录到PhpMyAdmin。
如果它有帮助,我在运行Ubuntu 12.04 LTS的Amazon EC2实例上使用FuelPHP 1.4,我已经通过apt-get安装了MySQL和PHP。我有另一个应用程序(在另一个实例上)运行旧版本的FuelPHP(1.2.1),运行没有问题。
顺便说一下,这个问题可能与这个问题密切相关,但我把它作为一个单独的问题来问,因为我遇到的问题并不局限于命令行
好吧,这已经花了太长时间才能达到底部,但事实证明很容易修复:出于某种原因,在FuelPHP 1.4中,舞台环境的配置目录称为staging
(在以前的版本中是stage
)。
我不知道这是否是一个目录命名错误,或者这是一个新名称,并且在FuelPHP的某个地方没有更新使用它,但我发现将目录的名称更改为'stage'修复了这个问题。
在使用FuelPHP的oil实用程序运行单元测试时,我遇到了同样的问题。如果您遇到这个问题,很可能是配置问题。
要调试,在代码中不工作的地方放一些像下面这样的东西,看看FuelPHP试图使用什么环境:
<?php
echo "env: " . Fuel::$env;
exit;
在我的例子中,它显示它正在尝试使用"Test"环境。因为我在应用的配置文件夹中没有一个"测试"文件夹,所以它失败了。
在大多数版本的FuelPHP中,但是你在。htaccess文件中设置了Fuel::$env将在所有版本的FuelPHP中工作。但是在旧版本中,您可能会遇到此问题。
你可以编辑bootstrap.php文件并手动设置你想要的FuelPHP环境,或者设置它试图使用的环境
Apache web server: SetEnv FUEL_ENV DEVELOPMENT希望对大家有所帮助
对于这些都不起作用的人,请确保两件事
- 有多个db.php文件
/fuel/app/config/development/db.php
。检查@Chad Hutchins提到的环境,仔细检查用户名和密码是否正确 - 确保
/var/mysql/mysql.sock
存在。在我的情况下,我使用/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
,所以我需要创建一个符号链接。遵循此处的说明
希望对大家有所帮助