Проблема была в том, как данные были отформатированы. Вот моя напечатанная переменная $info
:
{"table":"achievements","column":"Goal","value":1,"whereColumn":"id","whereValue":"1"}
Строка из file_get_contents('php://input')
заключена в фигурные скобки, и каждое значение отделяется запятыми, оба из которых мне пришлось удалить.
Мне также пришлось избавиться от кавычек для каждой пары ключ-значение строки, и, поскольку все, что я хотел, это значение, мне пришлось избавиться от всего, начиная с :
и до («ключ», если вы будет).
Вот мой (хотя и хакерский) результат, который отлично сработал:
//PHP posted info
$info = file_get_contents('php://input');
$dataArr = explode(',',$data);
$dCount = 0;
foreach ($dataArr as $datum) {
$newDatum = substr($datum, strpos($datum, ":") + 1);
$newDatum = str_replace(array('}', '{', '"'), '', $newDatum);
$dataArr[$dCount] = $newDatum;
$dCount++;
}
$table = $dataArr[0];
$column = $dataArr[1];
$value = $dataArr[2];
$whereColumn = $dataArr[3];
$whereValue = $dataArr[4];
Модуль Fcntl установлен? Попробуйте это:
perl.exe -MFcntl -e 1
Если это жалуется, Вам не установили модуль Fcntl. Если это не жалуется, то у Вас есть доступ к Fcntl:: скопление, так помещает это в Ваш сценарий:
use Fcntl qw(:DEFAULT :flock);
и от Вас идут.
Попытайтесь использовать perldoc-f, скапливаются, чтобы проверить, что вещи поддерживаются и затем изучают данный пример для знания критериев использования функции. Здесь скопированный с perldoc:
C:> perldoc-f скопление
use Fcntl ':flock'; # import LOCK_* constant
sub lock {
flock(MBOX,LOCK_EX);
# and, in case someone appended
# while we were waiting...
seek(MBOX, 0, 2);
}
sub unlock {
flock(MBOX,LOCK_UN);
}
open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")