Как исправить "Отказано в доступе" при попытке запустить внешний 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, Если нет, отрегулируйте соответственно.

Другие вопросы по тегам