首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么PHP不遵循启用SELinux的符号链接?

为什么PHP不遵循启用SELinux的符号链接?
EN

Stack Overflow用户
提问于 2014-04-29 10:34:08
回答 1查看 2.2K关注 0票数 0

我有一个使用propel的网站。我希望将各种配置文件从web根目录中删除,但是propel需要它们(如schema.xmlbuild.properties等)位于同一个目录中。因此,我决定从web根目录中添加符号链接到以下目录:

代码语言:javascript
运行
复制
somesite.com/
  |
  |- public/
  |  |- index.php
  |  |- build -> ../private/build
  |  |- vendor -> ../private/vendor
  |
  |- private/
  |  |- build.properties
  |  |- schema.xml
  |  |- build/
  |  |- vendor/

我的包含路径是这样设置的:

代码语言:javascript
运行
复制
set_include_path('vendor/propel/propel1/runtime/lib' . PATH_SEPARATOR . 'build/classes' . PATH_SEPARATOR . get_include_path());

但是,当我尝试require_once 'Propel.php';时,我会得到以下错误:

代码语言:javascript
运行
复制
Warning: require_once(Propel.php): failed to open stream: No such file or directory in /home/staging/apache/somewebsite.co.uk/public/functions.php on line 5

使用chdir('vendor/propel/propel1/runtime/lib');检查它,我得到以下错误:

代码语言:javascript
运行
复制
Warning: chdir(): Permission denied (errno 13) in /home/staging/apache/somewebsite.co.uk/public/functions.php on line 5

因此,PHP/Apache似乎不会遵循符号链接。我尝试了以下几点:

  • 检查目录是否为o+x,以便apache能够读取它。
  • Options FollowSymLinks添加到apache中的目录指令中(尽管在文档中它表示这是默认设置)
  • 我还尝试过chcon -R -h -t httpd_sys_content_t public/vendor/更改SELinux类型,但由于某种原因它没有改变

更新

我以apache (su -s /bin/bash apache)的身份登录,并在public目录中运行cat vendor/propel/propel1/runtime/lib/Propel.php,它运行得很好。但是,我暂时禁用了SELinux和,错误消失了。所以,当然,它必须是SELinux。

正如我前面提到的,我试过:

代码语言:javascript
运行
复制
chcon -R -h -t httpd_sys_content_t public/vendor/

但是在完成之后,运行ls -alZ可以为供应商提供以下信息:

代码语言:javascript
运行
复制
lrwxrwxrwx. staging developers unconfined_u:object_r:user_home_t:s0 vendor -> /home/staging/apache/somewebsite.co.uk/private/vendor/

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-29 13:16:57

问题最终是我试图设置SELinux类型的方式。

我当时在跑步:

代码语言:javascript
运行
复制
chcon -R -h -t httpd_sys_content_t public/vendor/

然而,我不得不跑:

代码语言:javascript
运行
复制
chcon -R -h -t httpd_sys_content_t public/vendor

不带,尾随斜杠。一旦我做了这件事,所有的事情都会立即出现在生活中。

注意:由于配置中没有Options指令,所以不必指定它,而且它仍然有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23362186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档