Помогите разобраться с настройкой vps

sanda87

Новичок
Приветствую всех.
1. Первый раз взял vps, так как обычного хостинга для проектов уже не хватает.
Выбрал centos 5. Установил nginx + php-fpm. Повешал один сайт проверить работу. В результате почему-то не работает <?=?> в php. Но часть с БД вывел верно.
Пошел смотреть php.ini. short_tags = On. Так и не могу разобраться в чем проблема. Половина вывел с БД именно <?=?>, а половина кодом отобразил.
php -v
PHP 5.3.8 (cli) (built: Aug 23 2011 15:26:44)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
Может версия php какая-то не стабильная?

2. Также не могу нормально сделать location в nginx.conf. На хостинге раньше стоял apache и .htaccess был следующий:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site\.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteCond $1 !^(index\.php|images|files|archive|flash-games|system/tinymce|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
Помогите перевести на язык nginx:)
Пока сделал так:
user nginx;
worker_processes 1;
worker_rlimit_nofile 100000;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;


events {
worker_connections 2048;
use epoll;
}


http {
include /etc/nginx/mime.types;
default_type text/html;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

gzip on;
gzip_static on;
gzip_comp_level 5;
gzip_min_length 1024;
keepalive_timeout 15;

include /etc/nginx/conf.d/*.conf;

server {
listen 80;
server_name site.ru;
charset utf8;

location / {
root /usr/share/nginx/html/;
index index.php index.html index.htm;
}

location ~ \.php$ {
include fastcgi_params;
root /usr/share/nginx/html;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~ /\.ht {
deny all;
}
}
}
 

sanda87

Новичок
Понял, что отображается только в основной части:
<?php
/* Запросы к БД */

require(TEMPLATE."/user_header.php");
?>

<!-- Contents index -->
Здесь <?=?> работает нормально
<!-- end Contents -->

<?php require(TEMPLATE."/user_footer.php"); ?>
А в require отображается сам код.

PS: Просто файлы в require через nano пересохранил и все заработало. Владельца и права не менял. Ничего понять не могу.
 

alekciy

Новичок
PS: Просто файлы в require через nano пересохранил и все заработало. Владельца и права не менял. Ничего понять не могу.
Если файлы были в utf-8, то возможно проблема в BOM была. Ситуация отлавливается hexdump-ом обычно, если в редакторе нет указания есть в файле BOM или нет.
 

fixxxer

К.О.
Партнер клуба
1. По short tags. Видимо, ты смотришь не тот php.ini, который используется php-fpm. Либо перебивается, например, настройкой пула.

2. Как-то так примерно (не проверял, пишу основную идею)

host.conf

root /path;

set $_script_name /index.php;

location /images/ {}
location /files/ {}
...
location = /robots.txt {}

location / {
include fastcgi.conf;
}

fastcgi.conf

fastcgi_pass ...;

....

fastcgi_param SCRIPT_FILENAME $document_root$_script_name;
....
fastcgi_param PATH_INFO $uri;

// остальное - как в fastcgi_params

ну и cgi.fix_pathinfo = 0 в php.ini
 
Сверху