Как исправить "Отказано в доступе" при попытке запустить внешний Perl-скрипт?
system("logscr.ply ");
Ошибка, которую я получаю, такова:
Can't exec "logscr.ply": Permission denied at eal.ply line 3
Почему я получаю ошибку и как ее исправить?
2 ответа
Не зная никаких подробностей, могут быть разные причины:
- В вашем примере кода указано, что вы пытаетесь выполнить "logscr.ply". Пробел в конце может быть проанализирован как часть имени файла. Это должно привести к ошибке "файл не найден".
- Биты защиты для вызываемого сценария могут не разрешать непосредственное выполнение. Пытаться
chmod u+x logscr.ply
из вашей командной строки. - Папка, содержащая logscr.ply, может быть недоступна для вас. Убедитесь, что у вас есть права на чтение и выполнение (попробуйте
chmod u+r,u+x folder-name
). - Вызываемый скрипт может не распознавать себя как скрипт Perl, попробуйте
system("perl logscr.ply");
, - Возможно, ранее в вашем $PATH был файл с таким же именем. Используйте абсолютные пути в вашем вызове, чтобы предотвратить это (
system("perl /some/path/logscr.ply");
), не полагайтесь на переменную $PATH.
Что это за платформа / ОС?
Наверное logscr.ply
просто не имеет разрешения на выполнение. На Linux/Unix, например, вы должны сделать
chmod u+x logscr.ply
затем попробуйте еще раз.
Примечание. Предполагается, что вы являетесь владельцем logscr.ply
, Если нет, отрегулируйте соответственно.