Вы можете использовать следующую команду для поиска файлов по их абсолютным путям. Например. Я пытаюсь найти файлы.sh с помощью cmd следующим образом:
find. -type f -iname "*.sh"
Исправление найдено:
в SSH как корень:
cd /usr/bin
rm -f perl
ln -s /usr/local/cpanel/3rdparty/bin/perl.
Это устанавливает шебанг для обоих
#!/usr/bin/perl
и
#!/usr/local/cpanel/3rdparty/bin/perl
для использования обновленного Perl cpanel, найденного в:
/usr/local/cpanel/3rdparty/bin/perl
Если вы обнаружите, что строка#!
-в Perl-скрипте не действует (, как это имеет место здесь ), то, вероятно, скрипты вызываются с явный интерпретатор, как в
perl somescript.pl
В этом случае строка#!
-будет полностью проигнорирована, а фактический двоичный файлperl
будет первым найденным в $PATH
.
Если вы можете изменить способ вызова сценариев, то в идеале вы должны изменить это, чтобы удалить явную команду perl
. Это заставит строки#!
-в скриптах действовать (при условии, что скрипты исполняемые ).
В качестве альтернативы вы можете организовать переменную $PATH
таким образом, чтобы первый найденный двоичный файл perl
был тем, который, как вы знаете, вы хотите использовать. Например, вы можете установить
PATH=/usr/local/cpanel/3rdparty/bin:$PATH
для среды, в которой выполняется сценарий CGI. Это решило бы проблему , если только вызов явно не связан с usr/bin/perl
.Поскольку в вопросе не указано, какое программное обеспечение или инфраструктура веб-сервера используется или как они настроены для запуска сценариев Perl, это все, что я могу сказать.