【问题标题】:mysqli works when run directly but not when via js-ajaxmysqli 在直接运行时有效,但在通过 js-ajax 时无效
【发布时间】:2015-10-09 23:52:53
【问题描述】:

我有一个将信息放在数据库中的 php 脚本。 当我在服务器上手动运行脚本时,一切都按预期工作。 但是,当我使用 ajax 通过 javascript 运行该脚本时,php 脚本在以下行失败:

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

我得到的错误是 PHP致命错误:在/var/www/html/..中找不到类'mysqli'。

这没有任何意义,因为我只是直接在服务器上运行那个脚本没有问题。

我在 /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

【问题讨论】:

  • 您是否检查过您的 PHP 网络服务器副本中是否启用了 mysqli?命令行和 SAPI 有不同的 .ini 文件,它们不一定启用相同的模块。
  • 用ajax发布你正在调用的页面。

标签: javascript php ajax mysqli


【解决方案1】:

找到php.ini 文件,注意可能有两个。您可能需要 apache/bin 文件夹中的那个。

寻找

extension=php_mysqli.so

确保它的前面没有# 注释字符。

如果您不确定它的位置,请尝试whereis php.ini

【讨论】:

  • apache/bin 文件夹在哪里?
  • 对不起,我不知道我主要是 Windows 用户。你试过whereis
  • 我做了 whereis php.ini,它给了我一个似乎是 php 可执行文件的列表。
  • 试试这个命令找到它php -r "phpinfo();" | grep php.ini
  • 阅读此lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu 你需要运行php5enmod mysqli
【解决方案2】:

我有时也会遇到同样的问题。

问题是当您通过 ajax 调用页面时,所有服务器端包含和要求都已失效。您必须显式调用您的数据库连接,并确保在您通过 ajax 调用的页面上包含所有页面,以便在该调用中创建它们。

【讨论】:

  • 我不能。无论您在哪里创建数据库连接,都需要在要使用 ajax 调用的任何页面上再次创建它。并确保在这些页面上也包含您需要的内容。
猜你喜欢
  • 2019-07-19
  • 2013-10-07
  • 2019-12-17
  • 2016-08-06
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
相关资源
最近更新 更多