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

Php 在具有只读文件系统的服务器上托管piwik,php,filesystems,hosting,matomo,cloudcontrol,Php,Filesystems,Hosting,Matomo,Cloudcontrol,我使用CloudControl来托管,我想设置一个服务器(可能支持负载平衡)来托管我所有网站的piwik。唯一的问题是,CloudControl允许您访问的唯一可写目录是由$\u服务器['TMPDIR']定义的 是否可以修改piwik以使用此目录满足其所有文件写入需求 我还会遇到使用负载平衡的问题吗?类似于负载平衡器后面的每个节点自动生成的报告,因为它们彼此都不知道 有太多的代码让我无法确认这一点,但常量PIWIK_USER_PATH似乎被用作文件io的基本根。考虑到这一点,编辑index.ph

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

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


我还会遇到使用负载平衡的问题吗?类似于负载平衡器后面的每个节点自动生成的报告,因为它们彼此都不知道

有太多的代码让我无法确认这一点,但常量
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']);
}

可能会起作用,但当它试图在原始位置读取文件时会发生什么?但是,由于这是一个临时目录,它可能不可行,在这种情况下,使用或类似方法,结合持久性存储(您的数据库)的方法也可能有效-通过使用数据库加载/保存例程覆盖文件函数;很明显,这又打开了一罐圣经中的蠕虫,因此,我最后的建议是让你换一个限制较少的主机。

这样做的想法是,即使在你更新系统时,也要保持对系统的更改

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

这是所述文件的内容:

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

Piwik是否需要对任何文件进行写访问?它将数据存储在数据库中,不是吗。。。但如果它确实需要写访问权限,那么即使您设法修改它,您也将注定失败,因为每次更新都会破坏您的修改。在这种情况下,您最好转移到另一个托管环境。谢谢您的建议。我已经按照您的建议包含了bootstrap.php文件,但现在我遇到了一个新错误:“尚未找到配置文件{/data/local/depsh5jzunc/tmp/config/global.ini.php}。”如果piwik没有配置文件,我会假设piwik会识别出它还没有安装,并带我完成安装过程?可能会在安装后添加
bootstrap.php
?我猜,
PIWIK\u USER\u路径
让它认为它是设置好的。不幸的是,它变成了一种鸡和蛋的问题,因为我需要boostrap.php文件来强制PIWIK在我唯一可用的可写文件夹中工作。好的,在这种情况下。我建议您在部署piwik之前在
localhost
上进行配置。这可能吗?