无法在我的主机中使用PHP sem_get()函数

无法在我的主机中使用PHP sem_get()函数,php,linux,apache,mutex,dreamhost,Php,Linux,Apache,Mutex,Dreamhost,我想在PHP代码中使用信号量。我更新了我服务器的PHP版本,并且通过命令行运行良好。当我试图通过浏览器访问它时,会显示错误: Fatal error: Call to undefined function sem_get() in .../semaphore.php on line 8 代码如下: <?php $key = 123567; $maxAcquire = 1; $permissions = 0666; $autoRelease = 1; //it gives the err

我想在PHP代码中使用信号量。我更新了我服务器的PHP版本,并且通过命令行运行良好。当我试图通过浏览器访问它时,会显示错误:

Fatal error: Call to undefined function sem_get() in .../semaphore.php on line 8
代码如下:

<?php
$key = 123567;
$maxAcquire = 1;
$permissions = 0666;
$autoRelease = 1;

//it gives the error on the line below
$semaphore = sem_get($key, $maxAcquire, $permissions, $autoRelease);
sem_acquire($semaphore); 
echo "hello world!";
sem_release($semaphore);
?>

即使它通过命令行工作,为什么它不能在浏览器上工作?它是关于apache服务器的吗?除了信号量之外,你对PHP上的互斥还有什么建议吗?我希望数据库中的文本一次由一个用户编辑。谢谢。

提到:

默认情况下不启用对此功能的支持。要启用SystemV信号量支持,请使用选项--enable sysvsem编译PHP。要启用SystemV共享内存支持,请使用选项--enable sysvshm编译PHP。要启用SystemV消息支持,请使用选项--enable sysvmsg编译PHP

您已经使用
--enable sysvsem
编译了PHP以启用该函数

最后,您可以使用
phpinfo()
函数验证信号量支持的状态


更新此外,OP发现Apache使用的版本与console中使用的PHP版本不同。因此,浏览器和控制台的输出是不同的。

提到:

默认情况下不启用对此功能的支持。要启用SystemV信号量支持,请使用选项--enable sysvsem编译PHP。要启用SystemV共享内存支持,请使用选项--enable sysvshm编译PHP。要启用SystemV消息支持,请使用选项--enable sysvmsg编译PHP

您已经使用
--enable sysvsem
编译了PHP以启用该函数

最后,您可以使用
phpinfo()
函数验证信号量支持的状态



更新此外,OP发现Apache使用的版本与console中使用的PHP版本不同。因此,来自浏览器和控制台的输出是不同的。

我用
--enable sysvsem
编译了我的自定义PHP,当我通过命令行运行代码时,它就会工作:
PHP semaphore.PHP
。当我在命令行中键入
php-v
时,我看到php版本也被更新了。下一步要做的是确认Apache使用的PHP与Terminal使用的PHP版本相同。另外,仍然建议您在浏览器中检查
phpinfo()
。我的apache服务器上的PHP版本不同!你知道我该怎么换吗?顺便说一下,感谢您的关注。要知道如何解决此问题,首先我必须知道您使用的是哪个Linux发行版和版本。谢谢。如果我能像这样解决它,我会将它标记为答案。我用
--enable sysvsem
编译了我的自定义PHP,当我通过命令行运行代码时,它就会工作:
PHP semaphore.PHP
。当我在命令行中键入
php-v
时,我看到php版本也被更新了。下一步要做的是确认Apache使用的PHP与Terminal使用的PHP版本相同。另外,仍然建议您在浏览器中检查
phpinfo()
。我的apache服务器上的PHP版本不同!你知道我该怎么换吗?顺便说一下,感谢您的关注。要知道如何解决此问题,首先我必须知道您使用的是哪个Linux发行版和版本。谢谢。如果我可以这样解决它,我会将其标记为答案。对于相同的PHP环境(命令行、Apache模块、CGI…),不必使用相同的配置。您需要为命令行安装扩展。对于相同的PHP环境(命令行、Apache模块、CGI…),不一定要有相同的配置。您需要安装命令行的扩展。