在具有只读文件系统的服务器上托管piwik

时间:2011-09-01 15:55:31

标签: php filesystems hosting matomo cloudcontrol

我使用CloudControl进行托管,我想设置一个服务器(可能具有负载均衡支持)来托管我所有网站的piwik。唯一的问题是CloudControlled允许访问的唯一可写目录由$ _SERVER ['TMPDIR']定义。

是否可以修改piwik以使用此目录来满足其所有文件写入需求?

我还会遇到使用负载平衡的任何问题吗?自动生成的报告是由负载均衡器后面的每个节点生成的,因为它们彼此不了解?

2 个答案:

答案 0 :(得分:3)

即使您更新,我们的想法仍然是为您的系统保留此更改。

这很容易做到:在piwik 文件夹中创建bootstrap.php

这是所述文件的内容:

<?php
define('PIWIK_USER_PATH', $_SERVER['TMPDIR']);

您可以仔细检查一下:在index.php中,您应该看到它检查同一文件夹中的bootstrap.php文件。它包含在可用时,这使您可以进行少量自定义,并在更新时保留它们。例如。我在过去三年左右从svn运行了piwik,并在那里进行了一些自定义更改。

答案 1 :(得分:1)

我能够确认这项工作的代码太多了,但常量PIWIK_USER_PATH似乎被用作文件io的基础根。考虑到这一点,编辑 index.php ,围绕 23 行,最初是:

if(!defined('PIWIK_USER_PATH'))
{
    define('PIWIK_USER_PATH', PIWIK_DOCUMENT_ROOT);
}

类似于:

if(!defined('PIWIK_USER_PATH'))
{
    define('PIWIK_USER_PATH', $_SERVER['TMPDIR']);
}

可能会工作 - 但是当它试图在原始位置读取文件时会发生什么?但是,由于这是一个临时目录,它可能不可行,在这种情况下,使用override_function或类似方法与持久存储(您的数据库)配对的方法也可能工作 - 通过数据库加载/保存例程覆盖文件功能;很明显,这会打开另一种符合圣经的蠕虫,因此,我的最终建议是让你获得另一个限制较少的主人。