【问题标题】:Setting path variable for apache user on Amazon Ec2在 Amazon Ec2 上为 apache 用户设置路径变量
【发布时间】:2014-02-01 04:22:08
【问题描述】:

我已经做了好几个小时了,但我没有得到任何结果。

我无法将 /usr/local/bin 添加到 apache 用户 PATH 变量中。用户没有.profile,我不能su给用户,我不能使用exec从php导出到PATH并添加

SetEnv PATH /usr/local/bin

http.conf.htaccess 文件都没有区别。我找不到 envvars 文件来更改它,但我怀疑还有其他问题。

我已经重新启动了 apache,实际上是我的服务器。

有什么帮助吗?

【问题讨论】:

  • 请说明您希望观察的预期行为以及您改为观察的行为。那么,为什么你认为/usr/local/bin 不是$PATH 的一部分,你为什么要添加它?
  • 它不是路径的一部分,因为当我从 php 中回显它时,它显示 /sbin:/bin:/usr/sbin:/usr/bin 我想将它添加到它以执行命令使用执行。我希望看到任何形式的变化,我可以从那里开始。
  • 另外,普通用户的路径不同:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt /aws/bin:/home/ec2-user/bin 所以它是特定于 apache 用户的。我需要能够调用使用其他应用程序的应用程序,将源代码编辑为直接指向每个应用程序是不可行的。

标签: linux apache path environment-variables amazon


【解决方案1】:

最终遵循 Alfe 在他的回答中提出的建议,除了我添加到 /etc/sysconfig/httpd/etc/init.d/httpd 文件(更新时可以轻松覆盖)之外:

export PATH=${PATH:+$PATH:}/usr/local/bin

【讨论】:

    【解决方案2】:

    查看 /etc/passwd 以查看 apache 用户拥有哪个登录 shell(在 EC2 Ubuntu 实例上,它应该是 /bin/sh,这是指向 /bin/dash 的链接)。然后查看该 shell 的手册页,找出登录时读取的配置文件。 (对于/bin/dash,这将是用户主目录中的.login。)在那些您应该能够根据需要扩展您的$PATH

    编辑:

    由于您似乎没有该用户的登录 shell:查看启动系统服务的 /etc/init.d/* 脚​​本。阿帕奇将是其中之一。它们以root 启动,并且可以更改当前用户(例如更改为 apache 用户)。在那里,您可能可以根据需要调整 PATH。

    但是,修补这些脚本并不被视为典型配置。更新可能会覆盖您在那里修补的内容。

    【讨论】:

    • Apache 的 /etc/passwd 指向 /sbin/nologin,所以它没有外壳(我不认为,我不是专业的 unix 人)。我找了那条路,什么也找不到
    • 我明白了。可能只是切换当前用户,apache进程才刚刚启动而没有正确登录。在这种情况下,以 apache 用户身份运行的进程是万恶之源,必须在生成新子进程之前或生成新子进程时更改 $PATH 本身。
    • 我在回答中添加了另一种方法。
    • 我好像没有 apache,我有 httpd。但是,其中没有关于路径或更改用户的任何内容
    • 不,但你可以在那里更改它,因为它被子程序继承。
    猜你喜欢
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2011-04-30
    • 2014-02-08
    相关资源
    最近更新 更多