从 PHP 调用已编译的C++可执行文件来创建套接字
Calling a compiled C++ Executable from PHP to Create Socket
我正在开发一个同时使用C++和PHP的Web应用程序。 手头的问题围绕着从 PHP 调用 CPP 可执行文件。
环境:
- CentOS7
- PHP 7.4 (雷米(
- 阿帕奇 2.4.6
- C++ 11
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" 返回 false。"Whoami"如预期的那样返回阿帕奇。
我已经搞砸了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 不会阻止你做这种冒险的事情吗?
相关文章:
- 从 PHP 调用已编译的C++可执行文件来创建套接字
- Pyinstaller创建的可执行文件找不到Meipass目录中存在的DLL
- 配置:错误:C++编译器无法创建可执行文件
- catkin_make无法创建可执行文件,并自动将标题文件复制到DEVEL
- 如何转换一个普通的makefile以创建可以在另一台计算机上使用的静态可执行文件
- 在Eclipse(Ubuntu)创建C Makefile项目时,如何生成.bin(可执行文件)
- 可执行文件无法在双击执行时创建新文件
- 程序如何创建另一个可执行文件
- 创建不需要任何进一步安装即可在其他计算机上工作的可执行文件?
- 如何在带有C++的Visual Studio 2013中创建可执行文件
- CMake没有创建可以访问我的共享库的可执行文件
- makefile:未创建可执行文件
- 系统调用 open() 创建可执行文件
- 如何在 Ubuntu 上运行由 Code::Blocks 创建的可执行文件
- IDE 如何创建可执行文件
- GCC 和 binutils build - C 编译器无法创建可执行文件
- 如何创建生成文件,为对象和可执行文件指定不同的目录
- 无法从使用 Cmake 创建的可执行文件中删除符号名称
- 具有多个目标的生成文件,并创建一个包含可执行文件的目录
- 如何为刷新ROM创建C++可执行文件