从 PHP 调用已编译的 C++ 可执行文件以创建套接字

Calling a compiled C++ Executable from PHP to Create Socket

我正在开发一个同时使用 C++ 和 PHP 的 Web 应用程序。 当前的问题围绕从 PHP.

调用 CPP 可执行文件展开

环境:

Apache 作为 apache:[appgroup] 运行,并且所有文件都归其所有。可执行文件由所有者和组执行。

但是,从 php 调用可执行文件——无论是使用 exec()、shell_exec() 还是 system()——都不起作用,尽管从命令行。

我已经通过 运行

进行了一些测试
echo exec("whoami");
var_dump(file_exists('/var/www/html/project/bin/main'));
var_dump(is_executable('/var/www/html/project/bin/main'));

(main 是一个已编译的 C++ 文件,存在,从命令行调用时有效)。 PHP 可以看到文件,但是“is_executable” returns false。 “Whoami”returns apache,正如预期的那样。

我搞砸了 httpd.conf、php.ini,并尝试用几种不同的方式调用文件。我已经创建了 shell 和“hello world”C++ 文件,将它们放在与 php 脚本相同的目录中,但仍然没有成功。

无论如何,以下行不会执行任何操作(也不会调用任何其他 C++ 可执行文件或 shell 脚本)。

exec("/var/www/html/project/bin/main > /dev/null 2>&1");

是什么阻止了它的工作?

从 Web 应用程序调用可执行文件看起来不太安全。您确定某些 SELinux 或 AppArmor 不会阻止您做这种冒险的事情吗?