2014-04-23 67 views
6

我開始使用laravel 4,我嘗試着開始使用單元測試,這樣我就可以讓我的生活變得更輕鬆。那麼所有人都會猜測,在嘗試phpunit測試後,我的開發並沒有變得簡單。簡單的測試很好,很容易,但當事情開始變得複雜一些時,他們不會按照我的意願去做。PDOException:在使用phpunit時找不到驅動程序

問題是我進行了簡單的測試,但我得到了一些奇怪的錯誤PDOException: could not find driver。我已閱讀了一些文章並發表了關於此主題的文章,但沒有解決我的問題。我已經安裝了php5-mysql,當我打電話給php -m時,它說我有PDO和pdo_mysql。我使用的實際命令是php -m |grep -i "pdo",輸出是:

PDO 
pdo_mysql 

嗯,我一直在努力,actualy在瀏覽器中測試PDOException類。爲此,我已將mysql用戶密碼更改爲不正確的密碼,並測試手工服務器(用命令php artisan serve --->http://localhost:8000/調用)會發生什麼情況。在瀏覽器中,所有內容都可以作爲魅力使用,但當我嘗試在控制檯中調用phpunit時,結果並不相同。

我試圖看看web服務器和cli是否有不同的配置文件,但它的文件是相同的。我比較了這些配置文件包括:

爲Web服務器

/etc/php5/apache2/conf.d/20-pdo_mysql.ini 
/etc/php5/apache2/conf.d/05-opcache.ini 
/etc/php5/apache2/conf.d/20-json.ini 
/etc/php5/apache2/conf.d/20-mysql.ini 
/etc/php5/apache2/conf.d/20-mysqli.ini 
/etc/php5/apache2/conf.d/10-pdo.ini 
/etc/php5/apache2/conf.d/20-mcrypt.ini 
/etc/php5/apache2/conf.d/20-curl.ini 
/etc/php5/apache2/php.ini 

命令行

/etc/php5/cli/conf.d/20-pdo_mysql.ini 
/etc/php5/cli/conf.d/05-opcache.ini 
/etc/php5/cli/conf.d/20-json.ini 
/etc/php5/cli/conf.d/20-mysql.ini 
/etc/php5/cli/conf.d/20-mysqli.ini 
/etc/php5/cli/conf.d/10-pdo.ini 
/etc/php5/cli/conf.d/20-mcrypt.ini 
/etc/php5/cli/conf.d/20-curl.ini 
/etc/php5/cli/php.ini 

他們像這樣diff -s /path/to/file1 /path/to/file2比較我的用戶diff命令。

的錯誤是這樣的:

1) ExampleTest::testBasicExample 
PDOException: could not find driver 

/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:47 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php:22 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:59 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:47 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:127 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:63 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php:167 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php:135 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:366 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:93 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:56 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Console/Command.php:108 
/var/www/smlsspd/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:241 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Console/Command.php:96 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Console/Application.php:96 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Foundation/Artisan.php:57 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:208 
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:208 
/var/www/smlsspd/app/tests/TestCase.php:70 
/var/www/smlsspd/app/tests/TestCase.php:70 
/var/www/smlsspd/app/tests/TestCase.php:46 
phar:///var/www/smlsspd/phpunit.phar/phpunit/TextUI/Command.php:179 
phar:///var/www/smlsspd/phpunit.phar/phpunit/TextUI/Command.php:132 

你能不能給我一個提示或解決這個問題?

感謝您的時間:)

回答

11

似乎使用SQLite數據庫進行測試Laravel。請參閱第2行的回溯:

/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php:22 

但是,這似乎沒有安裝在您的系統上。所以我認爲你需要安裝SQLite驅動程序。

+0

好吧,似乎是一個問題,因爲我真的沒有安裝SQLite PDO驅動程序。我稍後會測試一下。 – melanholly

+1

我最終回家並測試了一些東西。看起來好像我沒有閱讀所有的錯誤信息。感謝您的幫助。 – melanholly

8

如果您正在使用SQLite測試你需要的PHP源碼司機

的Ubuntu 14.04

sudo apt-get install php5-sqlite 
sudo service apache2 restart 

在Ubuntu 16.04有沒有php5-sqlite

sudo apt-get install php7.0-sqlite 
sudo service apache2 restart 
1

在Windows上,我不得不在php.ini中激活extension=php_pdo_sqlite.dll

0

對於使用Laravel Homestead那些,確保你從家園,而不是你的本地機器上運行phpunit!您可以使用vagrant sshSSH into it

正如其他人所提到的,它需要SQLite並在虛擬機中運行它,以確保它可用於您的測試。

相關問題