我在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启用。
答案 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”只是打开内存来阅读。