В доступе отказано, когда я использую mysql_connet через nginx, но командная строка работает нормально

Моя среда:

CentOS 6.6

Nginx 1.7.10 с модулями mod_security, naxsi, ngx_pagespeed

PHP 5.6.5

Мариадб 10.0.16

SeLinux закрыть

setenforce 0

Мой тестовый код:

<?php
/*
** Connect to database:
*/

// connect to the database
$con = mysql_connect('localhost','root','my pass')
or die('Could not connect to the server! ' . mysql_error());

var_dump($con);
exit;

Вот и все.

И когда я использую Firefox для запуска этого скрипта

В результате «Не удалось подключиться к серверу! В доступе отказано»

Ошибка nginx.log

2015/02/18 23:26:33 [ошибка] 1532 # 0: * 68 FastCGI отправил в stderr: «PHP сообщение: PHP Предупреждение: mysql_connect (): разрешение запрещено в /var/www/nginx/aa.php на линии 9 «при чтении заголовка ответа из апстрима, клиент: ip клиента, сервер: localhost, запрос:» GET /test-sql-injection.php HTTP / 1.1 «, апстрим:» fastcgi: // unix: / var / run / php -fpm.sock: «, хост:» ip сервера «

Но когда я использую командную строку для запуска этого скрипта

php aa.php

Результат

resource(5) of type (mysql link)

Это успех, чтобы подключиться к Марии БД …

Разрешение файла mysql.sock

В / тмп

lrwxrwxrwx. 1 mysql  mysql    25 2015-02-18 21:20 mysql.sock -> /var/lib/mysql/mysql.sock

В / var / lib / mysql

srwxrwxrwx.  1 mysql mysql        0 2015-02-18 23:03 mysql.sock

вся команда запускается от имени root

и когда я использую другого пользователя для запуска команды php

все еще получите сообщение об ошибке «Отказано в доступе!»

разрешение какого файла неверно?

======

Разрешение / var / lib / mysql dir равно 700

так что это вызывает разрешение отказано в проблеме ….

2

Решение

php-cgi и php-cli не используют один и тот же файл php.ini.
Сравните оба файла, возможно у вас есть разница

0

Другие решения

Проверьте полный путь к файлу сокета.
каждый каталог в пути к сокету должен иметь разрешение eXecute для пользователя веб-сервера.
например / var / или / var / lib / или / var / lib / mysql / могут иметь chmod 700, когда он должен иметь chmod 711.

Обратите внимание, что создание более разрешающего chmod может привести к проблемам с безопасностью. Я предлагаю вам переехать mysql.sock в каталог, доступный по умолчанию, такой как / tmp

-1

По вопросам рекламы [email protected]