phpMyAdmin + CentOS 6.0 - 禁止

时间:2011-09-21 12:37:56

标签: phpmyadmin centos selinux

当我想访问我的phpMyAdmin时,我总是收到此消息。

w3m localhost/phpmyadmin

Forbidden

You don't have permission to access /phpmyadmin/ on this server.

Apache/2.2.15 (CentOS) Server at localhost Port 80

安装步骤:

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2- 2.el6.rf.x86_64.rpm
yum install phpmyadmin

添加别名

vi /etc/httpd/conf.d/phpmyadmin.conf
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin

从Cookie更改为http

vi /usr/share/phpmyadmin/config.inc.php
[...]
 /* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

重新启动

/etc/init.d/httpd restart

SELinux - / etc / httpd

drwxr-xr-x. root root system_u:object_r:httpd_config_t:s0 .
drwxr-xr-x. root root system_u:object_r:etc_t:s0       ..
drwxr-xr-x. root root system_u:object_r:httpd_config_t:s0 conf
drwxr-xr-x. root root system_u:object_r:httpd_config_t:s0 conf.d
lrwxrwxrwx. root root system_u:object_r:httpd_log_t:s0 logs -> ../../var/log/httpd
lrwxrwxrwx. root root system_u:object_r:httpd_modules_t:s0 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. root root system_u:object_r:httpd_config_t:s0 run -> ../../var/run/httpd

SELinux - / usr / share / phpmyadmin

drwxr-xr-x. root root   system_u:object_r:usr_t:s0       .
drwxr-xr-x. root root   system_u:object_r:usr_t:s0       ..
-rw-r--r--. root root   system_u:object_r:usr_t:s0       browse_foreigners.php
-rw-r--r--. root root   system_u:object_r:usr_t:s0       calendar.php
-rw-r--r--. root root   system_u:object_r:usr_t:s0       changelog.php
-rw-r--r--. root root   system_u:object_r:usr_t:s0       chk_rel.phph
.
.
.
-rw-r--r--. root root   system_u:object_r:usr_t:s0       view_create.php

操作系统

centos-release-6-0.el6.centos.5.x86_64

7 个答案:

答案 0 :(得分:31)

编辑httpd.conf文件,如下所示:

# nano /etc/httpd/conf/httpd.conf

在此处添加以下行:

<Directory "/usr/share/phpmyadmin">
    Order allow,deny
    Allow from all
</Directory>

发出以下命令:

# service httpd restart

如果问题仍未解决,请停用SELinux。

答案 1 :(得分:28)

上面的配置都没有在我的CentOS 7服务器上工作。经过几个小时的搜索,这对我有用:

编辑文件phpMyAdmin.conf

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

并将其替换为顶部:

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       #Require ip 127.0.0.1
       #Require ip ::1
       Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

答案 2 :(得分:7)

我尝试了这里提供的所有答案:编辑phpMyAdmin.conf,更改phpmyadmin文件夹的selinux上下文,禁用selinux ......但我仍然从Web服务器获得了“Forbidden”。

我终于找到了Edouard Thiel帖子here中遗漏的内容:

$ yum install php

然后重启httpd:

$ service httpd restart =&gt;对于centos 6 hots

$ systemctl restart httpd =&gt;对于centos 7主机

令我惊讶的是,为什么php首先没有安装为phpmyadmin的依赖项。

此致 佛瑞德

答案 3 :(得分:3)

我现在有两天同样的问题了。禁用SELinux,一切都没有帮助。我意识到,为一个小修复禁用安全性可能并不聪明。然后我发现了这篇文章 - http://wiki.centos.org/HowTos/SELinux/,它解释了SELinux如何运作。所以这就是我所做的,它解决了我的问题。

  1. 通过转到phpmyadmin的父目录(我的是html)并输入:

    来启用对主phpmyadmin目录的访问
    chcon -v --type=httpd_sys_content_t phpmyadmin
    
  2. 现在输入以下内容对index.php执行相同的操作:

    chcon -v --type=httpd_sys_content_t phpmyadmin/index.php
    

    现在返回并检查您是否收到空白页面。如果你是,那么你走在正确的轨道上。如果没有,请返回并检查您的httpd.config目录设置。一旦获得没有警告的空白页面,请继续。

  3. 现在通过运行:

    来递归phpmyadmin目录中的所有文件
    chron -Rv --type=httpd_sys_content_t phpmyadmin/*
    
  4. 返回到您的phpmyadmin页面,看看您是否看到了所需内容。 如果您运行的是可从网络外部访问的Web服务器,请确保将SELinux重置为适当的安全级别。希望这有帮助!

答案 4 :(得分:0)

上述解决方案中没有一个适合我。以下是最终的工作:

#yum update
#yum install phpmyadmin

请注意,phpmyadmin几个小时前就开始工作了。我不知道发生了什么。

在此之后,进入浏览器,我收到一条错误./config.inic.php can't be accessed

#cd /usr/share/phpmyadmin/
#stat -c %a config.inic.php
#640
#chmod 644 config.inic.php

这表明文件权限是640,然后我将它们更改为644。 最终,它奏效了。

请记住重启httpd。

#service httpd restart

答案 5 :(得分:0)

我在录制网址时遇到了同样的问题

https://www.nameDomain.com/phpmyadmin

由于/ use / share / phpMyAdmin目录中的规则,禁止显示消息 我通过在此部分中添加此文件/etc/httpd/conf.d/phpMyAdmin.conf

来解决此问题
<Directory /usr/share/phpMyAdmin/>
    ....
</Directory>

这些规则

<Directory /usr/share/phpMyAdmin/>
   Order Deny,Allow
   Deny from All
   Allow from 127.0.0.1
   Allow from ::1
   Allow from All
   ...
</Directory>

您保存文件,然后重新启动apache服务,无论您选择哪种方法service httpd gracefulservice httpd restart,这取决于您的政策

出于安全原因,如果您的IP没有更改,您可以通过设置一个IP地址来指定一个连接,否则如果您的IP也在每次更改时都更改。

<Directory /usr/share/phpMyAdmin/>
   Order Deny,Allow
   Deny from All
   Allow from 127.0.0.1
   Allow from ::1
   Allow from 105.105.105.254 ## set here your IP address
   ...
</Directory>

答案 6 :(得分:-1)

我有同样的问题。

仅在我更改了php.ini变量

之后

display_errors = Off

display_errors = On

Phpadmin开始工作......疯了......