2015-04-08 15 views
8

Sulla mia macchina Windows 7, con PHP v5.6.7 e MySQL v5.6.23, e usando PHPStorm 8, sto tentando di creare un'istanza di un oggetto mysqli. Quando provo, ottengo:Classe 'mysqli' non trovata PHP v5.6.7

Fatal error: Class 'mysqli' not found in... 

ho anche eseguito questo test, suggerito here:

if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) { 
     echo 'no mysqli :('; 
} else { 
     echo 'we gots it'; 
} 

l'output è:

no mysqli :(

ho letto here che questo problema è a volte causato quando cerca la classe mysqli all'interno di un namespace. Ho cambiato il mio codice per correggere questo, ma il problema persiste

$mysqli = new \mysqli($host, $userName, $password, $database); 

ho letto che questo problema a volte è causato quando l'estensione mysqli non è abilitato. Tuttavia, sto usando la versione 5.6.7 di PHP, e l'estensione mysqli è abilitata di default sulle versioni 5.3 e successive (secondo here).

Giusto per essere sicuri, Ho verificato che php.ini-development e php.ini-production hanno extension_dir = "C:/PHP/php-5.6.7/ext" e hanno il punto e virgola rimossi dalle linee:

extension=php_mysql.dll 
extension=php_mysqli.dll 

[Ulteriori informazioni] ho trovato un test per correre e secondo phpinfo() non sta caricando un file di configurazione:

Configuration File (php.ini) Path C:\Windows 
Loaded Configuration File (none) 
Scan this dir for additional .ini files (none) 
Additional .ini files parsed (none) 

per qualche ragione, il server web PhpStorm non è alla ricerca di php.ini nel posto giusto?

ho questa impostazione nelle "opzioni Interprete" per this:

--php-ini C:\PHP\php-5.6.7\php.ini 

Ho verificato che questo è il percorso corretto.

+2

Penso che i file di sviluppo php.ini siano solo modelli, dovresti copiare quello su cui vuoi basare la tua configurazione e posizionarlo come appropriato per dove PHP cercherà il file vero e proprio; 'php.ini' –

+0

Hai riavviato tutti i servizi dopo aver apportato modifiche ai file di sistema? Inoltre, hai provato '$ mysqli = new mysqli ...' senza la barra? –

+0

scrowler, grazie per il suggerimento. L'ho fatto, ma sembra esserci un errore nell'analisi del file php.ini. Sto facendo qualche altra ricerca prima di modificare la mia domanda. Fred -ii-, credo che PHP non abbia un processo in esecuzione che deve essere riavviato. Credo che PHPStorm riavvierà automaticamente il suo server web interno tra le esecuzioni. Proverò a riavviare il comp per essere sicuro. L'ho provato con e senza il \. –

risposta

5

scrowler e Michael Bush ha sottolineato la risposta nei commenti di cui sopra. Ho pensato di creare una risposta per il beneficio di qualcuno che guardava il thread. Grazie, scrowler e Michael Bush.

I file php.ini-development e php.ini-production sono modelli. Per avere effetto, uno di questi deve essere copiato e rinominato php.ini.

+0

Se lo scrowler o Michael Bush desiderano postare una risposta prima di domani, accetterò invece il tuo. –

5

Avete aggiunto la directory di installazione di PHP per voi percorso dell'ambiente

  • fare clic destro su Risorse del computer dal menu di avvio
  • click sulle proprietà
  • trovare le impostazioni di sistema avanzate
  • click su variabili d'ambiente
  • sotto le variabili di sistema trovare PATH aggiungere C: \ php che sostituisce C: \ php con la directory di installazione di PHP ; *** ricordare il separatore di percorso

Controllare anche questa voce nel vostro php.ini

; Directory in which the loadable extensions (modules) reside. 
; http://php.net/extension-dir 
; extension_dir = "./" 
; On windows: 
extension_dir = "c:/php/ext" 
+0

Sì, l'installazione di php si trova sul percorso di sistema. –

+0

Credo che sia necessario modificare il php.ini e cambiare extension_dir da extension_dir = "ext" a extension_dir = "c:/php/ext" o qual'è il tuo percorso è –

+2

puoi anche confermare che hai copiato e rinominato php .ini-development o php.ini-production a php.ini –