Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ PHP-CPP新扩展在cli';php';命令,但不在浏览器中_C++_Mysql_Php Extension_Php Cpp - Fatal编程技术网

C++ PHP-CPP新扩展在cli';php';命令,但不在浏览器中

C++ PHP-CPP新扩展在cli';php';命令,但不在浏览器中,c++,mysql,php-extension,php-cpp,C++,Mysql,Php Extension,Php Cpp,我正在使用PHP-CPP创建一个PHP扩展,其中包含一个函数,该函数将解析来自mysql的表 extension.cpp #include <phpcpp.h> #include <iostream> #include <mysql.h> Php::Value ss_parse_table(Php::Parameters &params) { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; MYSQL_FI

我正在使用PHP-CPP创建一个PHP扩展,其中包含一个函数,该函数将解析来自mysql的表

extension.cpp

#include <phpcpp.h>
#include <iostream>
#include <mysql.h>

Php::Value  ss_parse_table(Php::Parameters &params)
{ 
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL_FIELD *field;

/* INITIALIZE CONNECTION HANDLER, DO NOT CHANGE */
conn = mysql_init (NULL);


// @param orders: host,username,password,database,
mysql_real_connect (conn, params[0], params[1], params[2], params[3], 3306, NULL, 0);
/* show tables in the database (test for errors also) */


mysql_query(conn,("SELECT * FROM table");
res = mysql_store_result(conn);


// get the number of the columns
int num_fields = mysql_num_fields(res);

Php::Value array;
Php::Value rows;
int i = 0;

while((field = mysql_fetch_field(res))){
    array[i] = field->name;
    i++;
}

int x = 0;
while ((row = mysql_fetch_row(res)))
{

    for (int z=0;z<num_fields;z++) 
    {
        std::string fieldname = array[z];
        rows[x][fieldname] = row[z];
    }

    x++;
}

// DON'T FORGET TO CLEAN RESULT AFTER YOU DON'T NEED IT 
// ANYMORE
if(res != NULL)
   mysql_free_result(res);

/* disconnect from server */
mysql_close (conn);

return rows;

}

extern "C" {


  PHPCPP_EXPORT void *get_module() 
  {
    \
    static Php::Extension extension("extension", "1.0");
    extension.add("ss_parse_table",ss_parse_table);
    // @todo    add your own functions, classes, namespaces to the extension

    // return the extension
    return extension;
  }
}
在CLI中,当我运行命令'php/mnt/test/index.php'时,它工作正常。 该命令将输出定义的扩展函数(ss_parse_table)返回的数组,如下所示

Array
(
  [0] => Array
  (
    [id] => 'erd'
  )
)
但是当我从浏览器浏览它时,http失败了


“未收到数据”(chrome错误)或“连接已重置”(firefox错误)

我遇到了完全相同的问题。我通过将我的libmysqlclient.so文件所在的目录添加到系统路径来解决此问题:

PATH=$PATH:/usr/lib64
然后,重新启动httpd服务:

systemctl restart httpd.service
在那之后,一切都很顺利

我希望有帮助

systemctl restart httpd.service