2015-07-20 55 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可执行文件的文件列表。 –

相关问题