Я хочу использовать Сценарий PHP, чтобы позволить или отклонить просьбу прокси Сквида INA 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;
}
?>
Если я запускаю этот скрипт из командной строки, все работает для каждой входной строки, я получаю выходную строку "OK".
Проблема состоит в том, что, когда Сквид работает, я получил это ошибки (журнал из system.log):
сквид [43190]: Родитель Сквида: (Сквид 1), обрабатывают 56700, запустился
(сквид 1): mysqlAuth помощники отказывают слишком быстро, нуждаются в помощи!
сквид [43190]: Родитель Сквида: (Сквид 1), обрабатывают 56 700 вышедших с состоянием 1
сквид [43190]: Родитель Сквида: (Сквид 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) Copyright (c) 1997-2015 The PHP Group Механизм Zend 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