【问题标题】:Permission denied on PHP as a shell script作为 shell 脚本的 PHP 权限被拒绝
【发布时间】:2010-06-22 23:57:10
【问题描述】:

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

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

    #!/usr/bin/php
    <?php
    var_dump($argv);
    ?>
    
  • 做了chmod +x vardump
  • 但我在执行文件时收到 permission denied 错误:

    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

【问题讨论】:

  • 这是一道编程题吗?另外,好像和php没有关系。
  • ls -l /usr/bin/php 向您展示了什么?
  • @Mewp 我自己也不太确定。这应该是超级用户吗?
  • @Wrikken 我已经编辑了问题以显示结果
  • chmod 0755 vardump 之后会发生什么?现在,它的权限是 777,这对于 root 来说有点危险。

标签: php shell ubuntu


【解决方案1】:

解决了。根据您的所有答案,我怀疑问题根本不在 php 中。我在 NTFS 挂载上运行脚本,所以我尝试将它移动到根挂载并且它在那里工作。所以我将exec 添加到 /etc/fstab 并且它起作用了。

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

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

【讨论】:

  • 不错。感谢您将答案发布到该主题以供将来参考。
  • 作为一种解决方法,可能值得一提的是,简单地运行 php myfile.php 应该大部分都可以按预期工作。
【解决方案2】:

您是否可能使用两个不同的 php 实例?运行下面的,是不是/usr/bin/php以外的东西?

which php

【讨论】:

  • 不,还是/usr/bin/php
【解决方案3】:

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

【讨论】:

  • 我是lrwxrwxrwx 1 root root 13 2010-06-02 15:34 /etc/alternatives/php -&gt; /usr/bin/php5
  • 知道which php/usr/bin/php 这可能与Marco 提到的php 安装有关
【解决方案4】:

我会运行 which php - 我知道在 Ubuntu 上 php 链接到 /usr/bin/php(在 Ubuntu 10.04 桌面和服务器上测试,您的脚本在我的机器上运行良好,具有 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"
}

这可能需要在服务器故障中发布。最后运行以下命令以确保一切都正确安装。

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

【讨论】:

    【解决方案5】:

    我认为 Marco Ceppi 可能会有所作为。你有安装 php5-cli 包吗?请查看http://ubuntuforums.org/archive/index.php/t-1172223.html 了解更多详情。

    【讨论】:

    • 是的,php5-cli 已安装。我认为这就是 php vardump 起作用的原因。
    猜你喜欢
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    相关资源
    最近更新 更多