从PHP执行C ++时,包含的C ++库不起作用

时间:2015-08-07 14:48:27

标签: php c++ json include libraries

我正在尝试使用PHP中的exec()函数在XAMPP服务器上运行C ++。我正在导入C++ json library。当我从终端运行C ++代码时,它运行得很好,但是当我在PHP中运行它时,我没有输出。只要我从json库中添加任何代码,我就不再获得任何输出。

PHP:

<?php
  exec("./cPlusPlus", $output);
  echo $output;
?>

使用g ++编译的C ++ -std = c ++ 11:

#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <json>

using namespace std;
using json = nlohmann::json;

int main(int argc, char *argsv[])
{
  // If I remove this line, then I get the correct output
  // If I keep this line, I get no output
  json data = {"json stuff"};

  cout << "This is returned to PHP.";

  return 0;
}

似乎问题与我使用库的事实有关。我是否需要做一些特殊的事情才能使用PHP exec()函数运行库?

1 个答案:

答案 0 :(得分:0)

我在@ChristianHackl的帮助下解决了我的问题。我将DISTINCT ON (id,score)更改为SELECT id, created_at, data, (data->>'score')::NUMERIC AS score FROM posts WHERE NOT EXISTS ( SELECT 1 FROM swipes WHERE ((swipes.data)->>'post_id')::INT = posts.id AND ((swipes.data)->>'user_id')::INT = 32) UNION SELECT DISTINCT ON (id) ((notifications.data)->>'post_id')::INT AS id, posts.created_at, posts.data, 9999999 AS score FROM notifications, posts WHERE ((notifications.data)->>'user_id')::INT = 32 AND posts.id = ((notifications.data)->>'post_id')::INT ORDER BY score DESC 以查看抛出的错误。 然后我才能看到错误:

  

libstdc ++。so.6:版本`GLIBCXX_3.4.14&#39;找不到

找到解决方案here