У меня настроен скрипт procmail, который передает скрипт PHP при совпадении строки темы электронного письма:
:0
* ^[email protected]|^Subject.*(REMOVE|Undelivered Mail)
| /usr/bin/php -f /var/www/somefolder/script.php
Есть ли способ передать параметр PHP-скрипту с помощью команды procmail, как вы это делаете с параметрами строки запроса? Я пробовал следующее, и ничего не работает:
| /usr/bin/php -f /var/www/somefolder/script.php?iscron=1
| /usr/bin/php -f /var/www/somefolder/script.php --iscron=1
Я хочу, чтобы PHP-скрипт мог проверять, что его запускает. Спасибо за любую помощь.
Я немного отредактировал, надеюсь, стало понятнее. @ken-lee ответил на вопрос, поэтому я отмечу это как ответ. Спасибо.
Отвечает ли это на ваш вопрос? PHP, передача параметров из командной строки в PHP-скрипт
@triplee, я искал и не нашел этого, вероятно, потому, что искал что-то, связанное с procmail. Я думаю, что было бы хорошо опубликовать этот вопрос для тех, кто ищет то же самое.
В PHP, чтобы получить значения параметров, переданных из командной строки, вы можете проанализировать $argv
Более подробную информацию можно найти в официальной документации
Предположим, что ваша команда (для передачи от procmail к PHP):
/usr/bin/php -f /var/www/somefolder/script.php iscron=1 subject=stackoverflow
script.php может быть:
<?php
unset($argv[0]);
parse_str(implode('&',$argv),$_REQUEST);
if ($_REQUEST["iscron"]= = "1") {
// do things for iscron=1
}else{
// do other things
}
// $_REQUEST["subject"] will be "stackoverflow"
?>
Спасибо. Ответ, который мне был нужен, заключался в добавлении iscron=1
к команде канала. Пример синтаксического анализа тоже помогает.
Это довольно неясно; Вы спрашиваете, как отличить, какая часть регулярного выражения Procmail совпала (что пытается решить мой ответ) или как анализировать аргументы в PHP (на что, как я полагаю, должны быть подробно даны ответы на существующие вопросы)? Пожалуйста, отредактируйте, чтобы уточнить.