PHP exec():为什么我可以访问共享内存,但不能访问命名信号量?(errno = 13)


c - PHP exec(): Why can I access shared memory, but not named semaphores? (errno = 13)

我使用php exec()命令运行,get_value.cget_value.c附加到共享内存读取一个值,并返回到我的PHP脚本。在我连接到共享内存的初始测试中,它工作得很好。

然后当我添加信号量**时,sem_open()返回errno = 13。

我在errno上放了一个开关块,并列出了sem_open man页面中的所有错误案例。错误13没有被捕获,它只是通过默认情况。

错误13是什么?

**我创建了一个具有权限(0666 | o_create | O_EXCL)的信号量

编辑:一切都从命令行工作

使用PHP exec("whoami");来确定用户,很可能是www-data

这将让您知道apache试图访问系统资源的用户。然后,您需要启用该用户访问这些资源。

该用户通常位于:/etc/apache2/envvars