В PHP отказано в разрешении в виде сценария оболочки - PullRequest
2 голосов
/ 23 июня 2010

Я пытаюсь следовать инструкциям здесь: http://www.php.net/manual/en/features.commandline.usage.php

  • Я создал файл с именем "vardump"
  • Добавлен этот код в файл:

    #!/usr/bin/php
    <?php
    var_dump($argv);
    ?>
    
  • сделал chmod +x vardump
  • но я получаю ошибку denied error при выполнении файла:

    shiki@Etna:~/projects/tests$ ./vardump
    bash: ./vardump: Permission denied
    shiki@Etna:~/projects/tests$ sudo ./vardump
    sudo: unable to execute ./vardump: Permission denied
    

В чем может быть проблема? Я использую Ubuntu 10.04.

Выполнение этого так работает, хотя:

shiki@Etna:~/projects/tests$ php vardump
array(1) {
  [0]=>
  string(7) "vardump"
}

Вот права доступа к файлу:

shiki@Etna:~/projects/tests$ ls -l
-rwxrwxrwx 1 root root   41 2010-06-23 07:25 vardump

shiki@Etna:~/projects/tests$ ls -l /usr/bin/php
lrwxrwxrwx 1 root root 21 2010-06-02 15:34 /usr/bin/php -> /etc/alternatives/php

Ответы [ 5 ]

5 голосов
/ 23 июня 2010

Решил это. Основываясь на всех ваших ответах, я подозревал, что проблема не в php вообще. Я запускаю сценарий на монтировании NTFS, поэтому я попытался переместить его в монтирование root, и он работал там. Поэтому я добавил exec в / etc / fstab, и это сработало.

UUID=0B02861D7B0D6A31 /media/Data ntfs-3g defaults,users,exec,locale=en_PH.UTF-8 0 0

Этот ответ также дал мне ключ к этому. Большое спасибо за вашу помощь!

3 голосов
/ 23 июня 2010

Возможно, вы используете два разных экземпляра php? Запустите следующее, это что-то кроме / usr / bin / php?

which php
1 голос
/ 23 июня 2010

Я думаю, что Марко Чеппи может быть на что-то. У вас установлен пакет php5-cli? Посмотрите на http://ubuntuforums.org/archive/index.php/t-1172223.html для более подробной информации.

1 голос
/ 23 июня 2010

Я бы запустил какой php - я знаю в Ubuntu, что php связан с / usr / bin / php (протестировано на Ubuntu 10.04 Desktop и Server, ваш скрипт работает нормально с разрешениями 0777 и 0755 на моем компьютере, используя следующее:

marco@FW2X9K1:~/Projects$ php -v
PHP 5.3.2-1ubuntu4.2 with Suhosin-Patch (cli) (built: May 13 2010 20:03:45) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

marco@FW2X9K1:~/Projects$ ls -lah vardump 
-rwxrwxrwx 1 marco marco 41 2010-06-22 20:17 vardump
marco@FW2X9K1:~/Projects$ ls -l /usr/bin/php
lrwxrwxrwx 1 root root 21 2010-05-26 09:15 /usr/bin/php -> /etc/alternatives/php
marco@FW2X9K1:~/Projects$ ls -l /etc/alternatives/php
lrwxrwxrwx 1 root root 13 2010-05-26 09:15 /etc/alternatives/php -> /usr/bin/php5
marco@FW2X9K1:~/Projects$ ls -l /usr/bin/php5
-rwxr-xr-x 1 root root 7836792 2010-05-13 16:20 /usr/bin/php5

marco@FW2X9K1:~/Projects$ ./vardump 
array(1) {
  [0]=>
  string(9) "./vardump"
}

Это, вероятно, нужно будет опубликовать в serverfault. Наконец, выполните следующее, чтобы убедиться, что все установлено правильно.

marco@FW2X9K1:~/Projects$ dpkg -l | grep php5
ii  libapache2-mod-php5                  5.3.2-1ubuntu4.2                                      server-side, HTML-embedded scripting languag
ii  php5                                 5.3.2-1ubuntu4.2                                      server-side, HTML-embedded scripting languag
ii  php5-cgi                             5.3.2-1ubuntu4.2                                      server-side, HTML-embedded scripting languag
ii  php5-cli                             5.3.2-1ubuntu4.2                                      command-line interpreter for the php5 script
ii  php5-common                          5.3.2-1ubuntu4.2                                      Common files for packages built from the php
ii  php5-dev                             5.3.2-1ubuntu4.2                                      Files for PHP5 module development
ii  php5-mysql                           5.3.2-1ubuntu4.2                                      MySQL module for php5
1 голос
/ 23 июня 2010

У вас есть разрешение на запуск / etc / alternatives / php в системе? Возможно, что когда вы запускаете сценарии с php vardump, он использует бинарный файл php, отличный от / etc / alternatives / php. Чтобы проверить это, запустите which php и посмотрите, что он печатает. Кроме того, что вывод ls -l /etc/alternatives/php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...