没有root,服务器配置问题时Semget权限被拒绝?

时间:2013-07-31 08:48:44

标签: c++ configuration centos semaphore

我有一个使用信号量的C ++应用程序,我试图通过PHP“exec”命令调用它。当从终端以“root”身份登录时,我可以成功运行应用程序,但是当apache尝试运行它时(作为用户apache),它会因“Permission denied”错误而失败。

我做了一个“chwon apache:apache prog”和777它的权限进行测试,它仍然失败。

奇怪的是,这个确切的应用程序在我的本地开发环境中通过apache完美地运行。这两个环境都是Centos 6.4(最终版)x86_64,并以同一个用户身份运行PHP。

我没有想法,我不确定我还能做些什么。

以下是我的代码的相关部分。

void landw(char* path, char* retType)
{
startLocking:
    int semid,count;
    struct sembuf op;
    semid = semget((key_t)KEY,10,0666|IPC_CREAT);//Fails here
    if(semid==-1)
    {
      perror("error in creating semaphore, Reason:");
    }
...

我甚至改为“semget”这一行作为测试,仍然不行。

semid = semget((key_t)KEY,10,0666|IPC_CREAT|S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);

由于

1 个答案:

答案 0 :(得分:0)

我终于解决了问题,问题是SELinux。

SELinux在我的两台开发机器上都被禁用,但在生产服务器上启用了。