Назад | Перейти на главную страницу

Настройка Nginx и php5-fpm для работы с Codeigniter

Когда я пытался переключиться с Apache 2 на Nginx, я столкнулся с десятками проблем, которые все еще исправляю. в любом случае, я пытаюсь заставить их работать, но пока безуспешно. Так что я прошу здесь в поисках помощи / предыдущего опыта.

Я использовал конфигурации по умолчанию для запуска PHP, и он отлично работает только при запуске файлов PHP. но, к сожалению, URL-адрес codeigniter не заканчивается на * .PHP. Поэтому я думаю, что PHP-FPM не обрабатывает мои скрипты как файлы PHP, поскольку URL-адрес не заканчивается на *.PHP. Я просто догадываюсь.

Итак, есть ли способ заставить их работать вместе? мне это кажется невозможным, я пробовал множество конфигураций (конечно, после модификации их для соответствия моей среде), но ни одна из них не работала с Codeigniter.

Надеюсь, публикация моих текущих конфигураций, которые работают с обычными файлами php, приведет к некоторым решениям.
Примечание: Это то же самое, что опубликовано на вики-странице Nginx для фреймворка Codeigniter.

server {
        server_name _;#_ to catch all requests.

        root /usr/share/nginx/www;
        index index.html index.php;

        # set expiration of assets to MAX for caching
        location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
                expires max;
                log_not_found off;
        }

        location / {
                # Check if a file exists, or route it to index.php.
                try_files $uri $uri/ /index.php;
        }

        location ~* \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
}

используя предыдущую конфигурацию для моего /sites-enabled/default Конфигурация заставляет PHP работать, но не codeigniter, все, что я получаю, это белые страницы и пользовательский код 404 codeigniter при доступе к несуществующим файлам.

Я также перенастроил файлы config.php следующим образом:

$config['base_url'] = "http://localhost/";
$config['index_page']   = "";
$config['uri_protocol'] = "REQUEST_URI";

Я пробовал эти и многие другие конфигурации, обычно с теми же результатами.

В любом случае, есть несколько моментов, которые (надеюсь) дадут мне ответ:

1. Я пробовал эти конфигурации на Debian 6 / Ubuntu 12.04

2. Я использую последнюю версию php5-fpm , nginx из apt-get.

3. Что-то я заметил, комментируя SCRIPT_NAME и SCRIPT_FILENAMEfastcgi_params file) приводит к тому, что codeigniter показывает ошибку. однако их комментарии к текущей конфигурации выше не имеют никакого влияния.

4. права доступа ко всем файлам в /usr/share является 777, Я знаю, что это небезопасно, но использую только для тестирования.

Я нашел решение этой проблемы. Это не было связано ни с Codeigniter, ни с Nginx. проблема была в MySQL, поскольку я автоматически загружал библиотеку базы данных, которая подключается к MySQL при запросе любой страницы. Сам MySQL все равно не устанавливался, поэтому ничего не работает.

В Debain / Ubuntu все, что я делал, было apt-get install mysql-server mysql-client php5-mysql а затем настроить mysql и перезапустить php-fpm service php5-fpm restart. и тебе хорошо идти.

Try_files перенаправляет любой несуществующий URL-адрес на index.php

Проблема в том, что блок location ~ \.php не принимается во внимание.

Повторно скопируйте все внутри этого блока в блок выше сразу после вашего файла try_files.