我正在尝试在我的服务器上设置一个 joomla 3 实例,我已经将 nginx 与 owncloud 以及博客平台 ghost 一起使用。
我的第一次尝试实际上非常成功,只是在最后一个安装步骤(创建配置文件)中失败了。我虽然这是由于错误的权限,无法创建文件。我写了一个简短的测试脚本来验证 php5-fpm 是否在文件夹中具有写权限,并且它有效。
经过几次失败的重试并且没有日志文件后,我决定删除该目录并再次下载 Joomla。从那以后,没有任何效果。每次我解压缩 zip(新下载的或相同的)后,我都会遇到以下任意错误情况:
- 我被重定向到
installation/installation/index.php
而不是installation/index.php
- 我有关于丢失 php 文件的错误
- 我有关于缺少 php 类的错误:
- JApplicationBase
- JApplicationWebClient
- 一些视图类
- ...
每次解压缩并重新下载后,即使我没有更改 nginx 或 php5-fpm 配置上的任何内容,错误也会发生变化。
下载并解压文件后,我使用以下命令正确设置 Joomla 目录:
sudo chown -R joomla_user .
- 可选,仅当我与其他用户一起下载并解压缩 zip 时 - 你看我真的尝试了所有可能的组合
sudo chgrp -R www-data .
- nginx 作为 www-data 运行,但 joomla_user 不在 www-data 组中。
- 文件和文件夹仅对 nginx 可读,但不可写。我认为这不是问题,因为无论如何写入都是由 php 完成的
sudo chmod -R g+s .
- 确保所有未来上传的文件都可以被 nginx 读取
我在站点可用(和站点启用)中的 nginx 配置如下所示:
server {
listen 80;
server_name joomla.server_url;
root /home/joomla_user/www/joomla3;
index index.php index.html index.htm default.html default.htm;
# Support Clean (aka Search Engine Friendly) URLs
location / {
try_files $uri $uri/ /index.php?$args;
}
# deny running scripts inside writable directories
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
error_page 403 /403_error.html;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm-joomla_user.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# caching of files
location ~* \.(ico|pdf|flv)$ {
expires 1y;
}
location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
expires 14d;
}
}
php5-fpm pool-config 基本上是默认配置的复制粘贴,并更改了套接字名称和名称。
再次总结一下 - php5 执行工作,权限还允许创建和写入文件(至少在我检查的那些目录中),但是在安装一开始没有完成之后,现在我每次都收到非常随机的错误消息解压缩 joomla3 zip 文件,即使我从他们的网站(http://www.joomla.org/download.html )下载 id fresh(并通过 wget 直接下载到服务器)。
有没有人有在 nginx 上使用 Joomla 的经验?知道如何摆脱这些错误并使其运行吗?
更新:
我的 PHP 版本是 5.4.4:
PHP 5.4.4-14+deb7u8 (cli) (built: Feb 17 2014 09:18:47)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
同样昨天我正在和一个 Joomla 开发人员讨论这个问题,他们提出了目录权限问题,但是即使在chmod -R u+rw .
Joomla 目录中执行之后,ist 仍然存在。