Когда я пытался переключиться с 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_FILENAME
(в fastcgi_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.