CLI, MSSQL, Could not found driver

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
igor.pocta
Člen | 100
+
0
-

Ahoj,

mám tu takový oříšek, denně potřebuji synchronizovat data s MSSQL serverem a tak jsem si nainstaloval do XAMPPu PHP PDO SQLSRV 56 spolu s MS ODBC 11 driverem.

V configu PHP.INI mám:

; MSSQL DRIVER
extension=php_pdo_sqlsrv_56_ts.dll
extension=php_sqlsrv_56_ts.dll

V modelu mám

<?php
namespace App\CoreModule\Model;
use App\Model\BaseService;

class SyncService extends BaseService
{
    const TABLE_NAME_USER       = "user";

    public function syncData($db_name, $user, $password)
    {
        $data_source = 'sqlsrv:SERVER=SQLSERVER\PEARCON;DATABASE=' . $db_name;

        try {
            $dbh = new \PDO($data_source, $user, $password);
        } catch (\PDOException $e) {
            echo "Failed to get DB handle: " . $e->getMessage() . "\n";
            exit;
        }

        $stmt = $dbh->prepare("SELECT * FROM v_data");
        $stmt->execute();
        while ($row = $stmt->fetch()) {
		...

Když standardně přes web. prohlížeč spustím presenter s patřičnou akcí, všechno proběhne krásně, PDO se připojí k serveru, získá data a zpracuje. Když ale to samé spustím z příkazové řádky (protože to chci mít jako plánovanou úlohu), mám problém. Synchronizaci spouštím z BAT souboru s tímto příkazem

@echo off
php c:\xampp\htdocs\sandbox\www\index.php Core:Service:SyncData

a skončí chybou: Failed to get DB handle: could not find driver

Nenapadá vás, čím by to mohlo být? Jako backup řešení mám spouštění iexplore s parametrem webové stránky, která funguje ale to se mi nelíbí :)

Děkuji všem za pomoc,

I.

David Matějka
Moderator | 6445
+
+2
-

CLI a web maji nekdy oddelene php.ini, tak koukni, jestli jich tam nemas vic.

igor.pocta
Člen | 100
+
0
-

Tak jsem na to přišel …

Předtím byl na serveru jiný webserver a s vsystémové proměnné PATH byla cesta k původnímu PHP.

XAMPP si pouštěl svůj správný ale když jsem volal příkaz php z CLI, tak ta odkazovala do původního webserveru. Odhaleno až pomocí Powershellu, který ukázal výstup z php -i celý a já zjistil cestu ke konfiguračnímu souboru :)

Davide, díky, motivoval jsi :)