2015-07-20 56 views
0

我有一個PHP腳本,將信息放入數據庫。 當我在服務器上手動運行該腳本所有按預期工作。 但是當我運行通過使用Ajax的PHP腳本的JavaScript非常腳本在下面的行失敗:mysqli當直接運行,但不是通過js-ajax時,作品

$connection=new mysqli($servername,$username,$password,$dbname); 

,我得到的錯誤是 PHP致命錯誤:類「庫MySQLi」在/ var找不到/ WWW/html/..

這對我沒有任何意義,因爲我只是直接在服務器上運行該腳本而沒有任何問題。

我在/var/log/apache2/error.log中發現此錯誤。

這裏是我的ajax調用的樣子:

$.ajax({ 
    url:'db/insert.php', 
    complete: function(response){ 
     //$('#output').html(response.responseText); 
     alert('complete: '+response.responseText); 
     }, 
    error: function(){ 
     //$('#output').html('Bummer: there was an error!'); 
     alert('error'); 
     }, 
    async:"false", 
    type:"POST", 
    data:{visit_report:'1'} 
    }); 

爲什麼腳本以這種方式失敗?

這個問題是繼續在這裏: Enable mysqli in my in-webserver copy of php

+2

你檢查是否mysqli的是PHP的你在,Web服務器副本啓用?命令行和SAPI具有不同的.ini文件,這些文件不一定啓用了相同的模塊。 –

+0

我該怎麼做? –

+0

發佈您使用ajax調用的頁面。 –

回答

0

我有同樣的問題有時。

問題是,當您通過ajax調用頁面時,所有服務器端都包含並且需求已經死亡。你必須明確地調用你的數據庫連接,並確保將所有頁面包含在你通過ajax調用的頁面上,以便它們在該調用中創建。

+0

你能告訴我一個例子嗎? –

+0

我不行。無論您在何處創建數據庫連接,都需要在想要使用ajax調用的任何頁面上再次創建它。並且確保在這些頁面上也包含您需要的內容。 –

+3

這不應該導致「找不到類」錯誤。 – Barmar

1

找到你php.ini的文件,要小心可能有2個。你可能想要一個在你的apache/bin文件夾中。

查找

extension=php_mysqli.so 

確保它沒有在它前面的#註釋字符。

如果你不知道它生活的地方嘗試whereis php.ini

+0

wheres apache/bin文件夾? –

+0

對不起,我不知道我主要是一個Windows用戶。你試過'whereis' – RiggsFolly

+0

我做了whereis php.ini,它給了我一個似乎是php可執行文件的文件列表。 –

相關問題