Я перепутал переменные окружения, установленные для моего скрипта на в этом посте , где мне нужно было установить переменную env $ DBUS_SESSION_BUS_ADDRESS, но этого не произошло, когда я назвал скрипт как root.Вы можете прочитать это, но в конце вы можете проверить, содержит ли% ENV необходимые переменные и, если нет, добавить их.
От perlvar
%ENV
$ENV{expr}
The hash %ENV contains your current environment. Setting a value in "ENV" changes
the environment for any child processes you subsequently fork() off.
Моя проблема заключалась в том, что я запускал скрипт под sudo, и он не сохранял все переменные env моего пользователя. Вы запускаете скрипт под sudo или как другой пользователь, скажем, www-data (apache)?
Простой тест:
user@host:~$ perl -e 'print $ENV{q/MY_ENV_VARIABLE/} . "\n"'
, и если это не сработает, вам нужно будет добавить его в% ENV в верхней части вашего скрипта.