Я хочу использовать сценарий PHP, чтобы разрешить или отклонить запрос прокси-сервера Squid при установке pfsense, поэтому я использую эту конфигурацию для внешнего ACL:
external_acl_type mysqlAuth %SRC /usr/local/bin/php -f /var/scripts/mysqlacl.php
acl extGrant external mysqlAuth
http_access allow extGrant
Мой сценарий Mysql выглядит так:
<?php
file_put_contents("/var/scripts/out.txt",date("Y/m/d H:i:s")."Started\r\n",FILE_APPEND);
$STDIN=fopen("php://stdin", "r");
$STDOUT=fopen("php://stdout", "w"));
while (!feof($STDIN)) {
$line = trim(fgets($STDIN));
file_put_contents("/var/scripts/out.txt",date("Y/m/d H:i:s")." ".$line,FILE_APPEND);
fwrite($STDOUT, "OK\n");
//break;
}
?>
Если я запускаю этот сценарий из командной строки, все работает, для каждой строки ввода я получаю строку вывода «ОК».
Проблема в том, что при запуске Squid я получаю следующие ошибки (журнал из system.log):
squid [43190]: Родитель Squid: (squid-1) процесс 56700 запущен
(squid-1): хелперы mysqlAuth вылетают слишком быстро, нужна помощь!
squid [43190]: Родитель Squid: (squid-1) процесс 56700 завершился со статусом 1
squid [43190]: Родитель Squid: (squid-1) процесс 56700 не будет перезапущен из-за повторяющихся частых сбоев
И это cache.log:
kid1 | ipcCreate: / usr / local / bin / php: (2) Нет такого файла или каталога
Но этот файл наверняка существует, и чтобы быть уверенным, что это не из-за ошибки доступа к файлу, я попытался установить оболочку для пользователя «прокси» и войти в систему как пользователь прокси (su proxy
) и здесь из вызова оболочки /usr/local/bin/php -f /var/scripts/mysqlacl.php
и это работает!
Это моя версия php:
PHP 5.5.22 (cgi-fcgi) (построено: 26 февраля 2015 18:00:22) Авторское право (c) 1997-2015 гг. PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 гг. Zend Technologies с Suhosin v0. 9.37.1, Copyright (c) 2007-2014, SektionEins GmbH
Что это может быть?
Это мой ответ на использование скриптов PHP в качестве внешнего acl squid в pfsense:
ln -s /usr/local/bin/php /usr/pbi/squid-amd64/local/bin/php
ln -s /usr/local/lib/php /usr/pbi/squid-amd64/local/lib/php
ln -s /usr/local/etc/php.ini /usr/pbi/squid-amd64/local/etc/php.ini