сервер — общая память PHP не работает в lighttpd только в оболочке

У меня проблемы с Shmop на PHP. Когда я запускаю простой код в оболочке, я могу написать и прочитать то, что я хочу в памяти, но, используя те же самые сценарии на сервере, и ничего не происходит.

Это мой код (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 с модом fastcgi и модом fastcgi-php.

1

Решение

Проблема действительно проста для решения.

Во-первых, мы должны отобразить общую память:

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 в качестве разрешения, но пользователь из веб-сервера «www-data» и пользователь моей оболочки «pi» не могут получить доступ и записать в эту таблицу памяти только из-за разрешения.

Итак, в моем случае я просто установил разрешения для нормальной работы, у пользователя «пи» есть права на запись, а «www-данные» просто открывают память, чтобы прочитать ее.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]