PHP共享内存不在shell中的lighttpd中工作

时间:2017-07-29 03:22:10

标签: php server shared-memory

我在PHP上使用Shmop时遇到了问题。当我在shell中运行一个简单的代码时,我可以在内存中编写和读取我想要的东西,但是,服务器使用相同的脚本并没有任何反应。

这是我的代码(write.php)

<?php
$KEY = 672213396;
$smid = shmop_open($KEY, "c", 0644, 5);
$text = "test";
echo shmop_write($smid, $text, 0);
?>

(read.php)

<?php
$KEY = 672213396;
$smid = shmop_open($KEY, "a", 0644, 100);
echo shmop_read($smid,0,5);
?>

我的系统:Raspberry PI A +,Raspbian Jessy,PHP 5.6.30-0 + deb8u1(cli),lightpd使用mod fastcgi和mod fastcgi-php启用。

1 个答案:

答案 0 :(得分:0)

问题解决起来非常简单。

首先,我们必须映射共享内存:

pi@raspberrypi:$ ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status                           
0x28112995 32769      www-data   644        15         0                       
0x28112996 65538      www-data   666        15         0  

当我第一次运行代码时,我使用0644作为权限,但是来自webserver“www-data”的用户和我的shell用户“pi”无法访问和写入此内存表只是因为权限

所以,在我的情况下,我只是设置权限工作正常,“pi”用户有权写,“www-data”只是打开内存来阅读。