PHP作为shell脚本被拒绝

时间:2010-06-22 23:57:11

标签: php shell ubuntu

我正在尝试按照此处的说明操作:http://www.php.net/manual/en/features.commandline.usage.php

  • 我创建了一个名为“vardump”的文件
  • 将此代码添加到文件中:

    #!/usr/bin/php
    <?php
    var_dump($argv);
    ?>
    
  • 做了chmod +x vardump
  • 但执行文件时出现权限被拒错误:

    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 个答案:

答案 0 :(得分:5)

解决了它。根据你的所有答案,我怀疑问题不在于php。我在NTFS安装上运行脚本,所以我试图将它移动到根安装,它在那里工作。所以我将exec添加到/ etc / fstab并且它有效。

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

This answer也给了我一些线索。非常感谢您的帮助!

答案 1 :(得分:3)

你可能使用两个不同的php实例吗?运行以下命令,是/ usr / bin / php以外的其他内容吗?

which php

答案 2 :(得分:1)

您是否有权在系统上运行/ etc / alternatives / php?当你使用php vardump运行脚本时,它可能使用与/ etc / alternatives / php不同的php二进制文件。要检查这一点,请运行which php并查看其打印内容。另外,ls -l /etc/alternatives/php的输出是什么。

答案 3 :(得分:1)

我会运行哪个php - 我在Ubuntu上知道php链接到/ usr / bin / php(在Ubuntu 10.04桌面和服务器上测试,你的脚本在我的机器上使用以下命令运行正常:0777和0755:< / p>

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

答案 4 :(得分:1)

我认为Marco Ceppi可能会有所作为。你有安装php5-cli软件包吗?有关详细信息,请查看http://ubuntuforums.org/archive/index.php/t-1172223.html