2013-05-09 3 views
1

EDIT ONE: Я также тестировал это на Windows 7 с apache, и там происходит то же самое. Это означает, что проблема заключается прежде всего в маршрутизации всех страниц на домашнюю страницу.Сайт Yii, обслуживаемый nginx или apache, обслуживает только главную страницу

EDIT TWO: Согласно предложению в IRI-канале #yii, я заменил содержимое файла .htaccess на упрощенное из рабочего проекта. Однако это не привело к каким-либо изменениям в этой проблеме.

ИЗМЕНИТЬ ТРИ: У меня сейчас все нормально, с некоторыми изменениями в моем коде. Ответ ниже

Я пытался импортировать сайт, написанный с помощью Yii Framework, который я импортировал на свою рабочую станцию. Я сталкиваюсь с проблемой, когда попытка загрузить любую страницу не делает ничего, кроме прямой на главную страницу. Это означает, что все запросы по существу маршрутизируются точно так же, как если бы я загрузил запрос root. Ошибки не появляются в журнале доступа или журнале ошибок; запросы выглядеть следующим образом в журнале доступа Nginx, где «пример» является либо «локальный», «127.0.0.1», или IP-адрес сервера:

Accessing root (http://example/): 
127.0.0.1 - - [08/May/2013:13:05:28 -0700] 
"GET/HTTP/1.1" 200 8436 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0" 

Accessing login (http://example/site/login): 
127.0.0.1 - - [08/May/2013:13:07:01 -0700] 
"GET /site/login HTTP/1.1" 200 8427 "http://example/" "Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0" 

Accessing the same controller by http://example/index.php?r=site/login: 
127.0.0.1 - - [08/May/2013:14:40:45 -0700] 
"GET /index.php?r=site/login HTTP/1.1" 200 8419 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0" 

Учитывая, у меня есть 2 другие Yii проекты набор которые работают нормально, которые используют конфигурацию сервера, аналогичную той, которую я также вставляю ниже, я думаю, что это может быть что-то в работе самого приложения, к которому я еще не стремился. Если у кого-нибудь есть какие-либо предложения по чему-либо еще, я мог бы поделиться, попробовать или сравнить с рабочими проектами, которые я импортировал с других сайтов, было бы очень полезно :)

изменить: переключиться в конфигурации ближе к что я фактически использовал. Это, вероятно, не имеет значения, учитывая, что проект имеет ту же проблему во время работы в Apache в Windows.

server { 
    server_name localhost; 
    listen 80; 
    keepalive_timeout 70; 

    root /usr/www/[project name omitted]/public_html; 

    client_max_body_size 4M; 
    client_body_buffer_size 4M; 
    client_header_buffer_size 4M; 

    location/{ 
     try_files $uri $uri/ /index.php?$args; 
     autoindex on; 
    } 

    location ^~ /data/ { 
     expires 30d; 
    } 


    # redirect server error pages to the static page /50x.html 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root html; 
    } 

    #Disable logging for favicon 
    location = /favicon.ico { 
     log_not_found off; 
     access_log off; 
    } 

    #Disable logging for robots.txt 
    location = /robots.txt { 
     allow all; 
     log_not_found off; 
     access_log off; 
    } 

    location ~ /themes/\w+/views { 
     deny all; 
     access_log off; 
     log_not_found off; 
    } 

    # Pass all .php files onto a php-fpm/php-fcgi server. 
    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
     try_files $uri =404; 
     #fastcgi_intercept_errors on; 
     #fastcgi_connect_timeout 20; 
     fastcgi_send_timeout 20; 
     fastcgi_read_timeout 600; # For xdebug to work alright 
     fastcgi_buffer_size 128k; 
     fastcgi_buffers 4 256k; 
     fastcgi_busy_buffers_size 256k; 
     fastcgi_temp_file_write_size 256k; 
    } 
} 

ответ

0

У меня есть все разобрали после контакта с оригинальным разработчиком этого проекта, который сообщил мне о нескольких изменениях, которые необходимо сделайте.Они заключаются в следующем:

  • Обновление экземпляров кода, который выглядит следующим образом:

    session_start(); 
    $_SESSION['allowdownload'] = true; 
    session_write_close(); 
    
  • С этим:

    $session=new CHttpSession; 
    $session->open(); 
    $session['allowdownload'] = true; 
    $session->close(); 
    
  • , а также изменить настройки в защищенном/конфигурации /main.php для 'showScriptName' в массиве urlManager до 'true', а не 'false'. Я надеюсь, что это поможет кому-то еще в какой-то момент!

0

Вы должны удалить эту строку из конфигурации location /:

index index.html $yii_bootstrap; 

В основном вы говорите Nginx, что он всегда должен использовать $yii_bootstrap в качестве индексного файла. Поэтому линия try_files никогда не используется.

+0

Я фактически пошел и отредактировал конфигурационный файл где-то между пытаюсь что-то другое из того, что вы видели раньше (это просто то, что я скопировал и вставил от того, что Yii документов сами по себе имеют вверх по протоколу HTTPS://code.google.com/p/yii/source/browse/trunk/docs/guide/quickstart.apache-nginx-config.txt). Редактированный файл конфигурации содержит что-то ближе к вашему предложению, но абсолютно не помогает решить мою проблему. Я собираюсь попробовать это с apache вместо этого - я все еще сомневаюсь, что это проблема nginx с такой скоростью, но я могу ошибаться. Спасибо за предложение. –

0

Две вещи, которые я вижу. Как правило, для приложений Yii у меня есть настройка блока местоположения следующим образом. Не «~» и передняя косая черта перед вашим файлом index.php. Я также переместил бы ваш индексный параметр за пределы этого блока местоположения и в корневой блок сервера. Поэтому ваш блок местоположения должен выглядеть следующим образом:

location ~/{ 
     try_files $uri $uri/ /index.php?$args; 
} 

Второе, что связано с блоком местоположения php. Если вы не используете несколько php-файлов, вам нужно только указать доступ к index.php, а не разрешать доступ к любому файлу php-файла, находящемуся в обращении.

location ~ index.php$ { 

Это место блок должен работать для вас, хотя:

location ~ index.php$ { 
    fastcgi_split_path_info ^(.+\.php)(.*)$; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME /path/to/yii/app$fastcgi_script_name; 
    include fastcgi_params; 
    fastcgi_param QUERY_STRING  $query_string; 
    fastcgi_param REQUEST_METHOD $request_method; 
    fastcgi_param CONTENT_TYPE  $content_type; 
    fastcgi_param CONTENT_LENGTH $content_length; 
    fastcgi_intercept_errors  off; 
    fastcgi_ignore_client_abort  off; 
    fastcgi_connect_timeout 60; 
    fastcgi_send_timeout 180; 
    fastcgi_read_timeout 180; 
    fastcgi_buffer_size 128k; 
    fastcgi_buffers 4 256k; 
    fastcgi_busy_buffers_size 256k; 
    fastcgi_temp_file_write_size 256k; 
} 
+0

Спасибо за предложение, я признаю, что это облегчает более правильную и безопасную настройку. Я, вероятно, должен был просто разместить мою фактическую конфигурацию, в первую очередь, ту, что вы видели там, только что предложили yii docs. Тем не менее, это не единственные файлы php, которые запускаются на сервере, поэтому, насколько это возможно, это не ответ на мою проблему, которая по-прежнему стоит только с загрузкой главной страницы с чего-либо, что я пытаюсь сделать сайт, то есть ни одно из других действий не возвращает их соответствующие представления. –

Смежные вопросы