Поставил nginx 0.6.32 + php-fpm 5.3.0 для которого прописан choor.
Запустил и оказалось, что сессии не работают. Оказалось из-за chroot и
дефолтного пути сохранения файлов сессии /tmp которых лежит вне
заданного значения chroot. Поэтому решил сделать следущее.
Каталог /home/ftpuser/alekciy для всех файлов пользователя (для
пользователя alekciy), именно в него попадает пользователь через ftp.
Имеем папку /home/ftpuser/alekciy/tmp (ftpuser:ftpgroup 0777) для
хранения временных файлов и файлов сессий. Так же есть папка /home/
ftpuser/alekciy/
site.ru (ftpuser:ftpgroup 0755) для веба. Конфигурации
следущие.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
nginx:
user ftpuser ftpgroup;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Из etc/nginx/conf.d/ в него инлюдиться такой конфиг:
server {
listen 80;
server_name
site.ru;
access_log /home/ftpuser/alekciy/httpd.log main;
location ~ \.php$ {
fastcgi_pass
127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include fastcgi_params;
}
location / {
root /home/ftpuser/alekciy/
site.ru;
index index.php index.html index.htm;
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
php-fpm конфиг:
<?xml version="1.0" ?>
<configuration>
<section name="global_options">
<value name="pid_file">/usr/local/logs/php-fpm.pid</
value>
<value name="error_log">/usr/local/logs/php-fpm.log</
value>
<value name="log_level">notice</value>
<value name="emergency_restart_threshold">10</value>
<value name="emergency_restart_interval">1m</value>
<value name="process_control_timeout">5s</value>
<value name="daemonize">yes</value>
</section>
<workers>
<section name="pool">
<value name="name">
site.ru</value>
<value name="listen_address">
127.0.0.1:9001</
value>
<value name="listen_options">
<value name="backlog">-1</value>
<value name="owner">ftpuser</value>
<value name="group">ftpgroup</value>
<value name="mode">0666</value>
</value>
<value name="php_defines">
<value name="error_log">/home/ftpuser/
alekciy/php-fpm-error.log</value>
<value name="session.save_path">/home/
ftpuser/alekciy/tmp</value>
</value>
<value name="user">ftpuser</value>
<value name="group">ftpgroup</value>
<value name="pm">
<value name="style">static</value>
<value name="max_children">3</value>
<value name="apache_like">
<value name="StartServers">20</
value>
<value
name="MinSpareServers">5</value>
<value
name="MaxSpareServers">35</value>
</value>
</value>
<value name="request_terminate_timeout">300s</
value>
<value name="request_slowlog_timeout">0s</
value>
<value name="slowlog">logs/slow.log</value>
<value name="rlimit_files">1024</value>
<value name="rlimit_core">0</value>
<value name="chroot">/home/ftpuser/alekciy</
value>
<value name="chdir"></value>
<value name="catch_workers_output">yes</value>
<value name="max_requests">500</value>
<value name="allowed_clients">127.0.0.1</
value>
<value name="environment">
<value name="HOSTNAME">$HOSTNAME</
value>
<value name="PATH">/usr/local/bin:/usr/
bin:/bin</value>
<value name="TMP">/home/ftpuser/
alekciy/tmp</value>
<value name="TMPDIR">/home/ftpuser/
alekciy/tmp</value>
<value name="TEMP">/home/ftpuser/
alekciy/tmp</value>
<value name="OSTYPE">$OSTYPE</value>
<value name="MACHTYPE">$MACHTYPE</
value>
<value name="MALLOC_CHECK_">2</value>
</value>
</section>
</workers>
</configuration>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Ни каких грубых ошибок в таком конфиге я не вижу, но при обращению к
любому php файлу получаю ошибку:
Warning: Unknown: Filename cannot be empty in Unknown on line 0 Fatal
error: Unknown: Failed opening required '' (include_path='.:/usr/local/
lib/php') in Unknown on line 0
статика же отдается корректно.
В чем проблема? Если изменить директиву chroot на /home/ftpuser/
alekciy/
site.ru (т.е. сделать её равной директиве root nginx-а), то
скрипты начинают работать, но не работают сессии, т.к. tmp получается
выше, чем chroot-а, а выносить tmp папку в веб директорию /home/
ftpuser/alekciy/
site.ru совершенно не хочется.
Даже если вынести временную директорию в /home/ftpuser/alekciy/
site.ru/
tmp все равно сессии не работают, получаю ошибку:
Warning: session_register(): open(/home/ftpuser/alekciy/
site.ru/tmp/
sess_u5tknsofg8plb74unsujgoh7o2, O_RDWR) failed: No such file or
directory (2) in /test.php on line 3
В логах вообще пусто.