Моя среда:
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
так что это вызывает разрешение отказано в проблеме ….
php-cgi и php-cli не используют один и тот же файл php.ini.
Сравните оба файла, возможно у вас есть разница
Проверьте полный путь к файлу сокета.
каждый каталог в пути к сокету должен иметь разрешение eXecute для пользователя веб-сервера.
например / var / или / var / lib / или / var / lib / mysql / могут иметь chmod 700, когда он должен иметь chmod 711.
Обратите внимание, что создание более разрешающего chmod может привести к проблемам с безопасностью. Я предлагаю вам переехать mysql.sock
в каталог, доступный по умолчанию, такой как / tmp