Directus无法在共享主机上安装。

10

我正在尝试安装Directus。

我遵循文档中描述的指南进行了全新安装。然而,一旦我登录,就出现了这个错误:“服务器错误 - 此实例的服务器或数据库有问题。”

相反,应该会显示一个带有此消息的UI:“未设置集合 - 看起来还没有设置任何集合”

使用WAMP在本地主机上安装正常,因此我怀疑共享主机或数据库上的某些设置存在问题。

根据控制台,许多资源无法访问:

  • 404:/_/users/me?fields=last_page:1
  • 401:/interfaces:1
  • 401:/layouts:1
  • 401:/pages:1
  • 403:/_/collections:1
  • 403:/_/settings:1
  • 401:(API根)
  • 403:/_ /collection_preset ...
  • 403:/_/users?field...
  • 403:/_/relations?limit=1

MySQL版本(5.7)和PHP版本(7.3)符合Directus的要求...

我真的不知道要查找什么来诊断与共享托管的兼容性问题...


编辑

这是日志(没有堆栈):

[2019-08-28 11:31:24] api[_].ERROR: Directus\Database\Exception\ItemNotFoundException: Item not found in [server root path]/directus/src/core/Directus/Services/ItemsService.php:139
[2019-08-28 11:31:29] api[_].ERROR: Directus\Database\Exception\ItemNotFoundException: Item not found in [server root path]/directus/src/core/Directus/Services/ItemsService.php:139
[2019-08-28 11:31:29] api[].ERROR: Directus\Exception\UnauthorizedException: Unauthorized request in [server root path]/directus/src/helpers/app.php:268
[2019-08-28 11:31:29] api[].ERROR: Directus\Exception\UnauthorizedException: Unauthorized request in [server root path]/directus/src/helpers/app.php:268
[2019-08-28 11:31:29] api[_].ERROR: Directus\Permissions\Exception\ForbiddenCollectionReadException: Reading items from "directus_collections" collection was denied in [server root path]/directus/src/core/Directus/Permissions/Acl.php:988
[2019-08-28 11:31:29] api[_].ERROR: Directus\Permissions\Exception\ForbiddenCollectionReadException: Reading items from "directus_settings" collection was denied in [server root path]/directus/src/core/Directus/Permissions/Acl.php:988
[2019-08-28 11:31:29] api[].ERROR: Directus\Exception\UnauthorizedException: Unauthorized request in [server root path]/directus/src/helpers/app.php:268
[2019-08-28 11:31:29] api[_].ERROR: Directus\Permissions\Exception\ForbiddenCollectionReadException: Reading items from "directus_collection_presets" collection was denied in [server root path]/directus/src/core/Directus/Permissions/Acl.php:988
[2019-08-28 11:31:29] api[].ERROR: Directus\Exception\UnauthorizedException: Unauthorized request in [server root path]/directus/src/helpers/app.php:268
[2019-08-28 11:31:29] api[_].ERROR: Directus\Permissions\Exception\ForbiddenCollectionReadException: Reading items from "directus_relations" collection was denied in [server root path]/directus/src/core/Directus/Permissions/Acl.php:988
[2019-08-28 11:31:29] api[_].ERROR: Directus\Permissions\Exception\ForbiddenCollectionReadException: Reading items from "directus_collection_presets" collection was denied in [server root path]/directus/src/core/Directus/Permissions/Acl.php:988
[2019-08-28 11:31:29] api[_].ERROR: Directus\Permissions\Exception\ForbiddenCollectionReadException: Reading items from "directus_users" collection was denied in [server root path]/directus/src/core/Directus/Permissions/Acl.php:988

我刚刚放弃了OVH。我花了很多时间在专业托管和WebCloud上让它工作,但最终失败了。我转而选择了Infomaniak,完全没有任何问题! - Yako
你尝试过什么来调试这个问题? - Nico Haase
2个回答

0

我在使用共享主机时,在执行git clone后也遇到了一些问题。

不过,经过一番思考后,我只需在directus基目录中运行composer install,就成功地安装了它(v8),并且按照文档所述进行了安装。

我的假设是composer install操作设置/纠正了某些文件夹的权限和/或依赖关系。


0

在共享主机上请求已安装应用时遇到的问题

  • API调用中需要提供应用程序的名称(因为Directus可以处理具有相同实例的多个应用程序)。

  • 您想要在管理界面之外访问的集合需要拥有公共角色才能访问。

  • 另外,在我public/.htaccess文件中,将RewriteBase /添加到RewriteEngine On行下面,对于Ionos/1and1共享主机有所帮助。如果没有这一行,则重写过程不会执行,并返回500错误。

例如:

# Comment this line if you are getting: "Option SymLinksIfOwnerMatch not allowed here" error in Apache
Options +SymLinksIfOwnerMatch

# php5_module automatically handles HTTP_AUTHORIZATION headers, but fcgi_module does not.
<IfModule mod_setenvif.c>
    <IfModule mod_proxy_fcgi.c>
        SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>
</IfModule>

<ifModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    # Map all admin endpoints to the admin app (except static files)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^admin/(.*)   admin/index.html [NC,L]

    # Map all other requests to invoke the API router (except static files)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule !^admin index.php?%{QUERY_STRING} [L]
</ifModule>

# Uncomment the following lines to modify PHP settings. The lines below can be used to increase the max upload size of files in Directus
#<IfModule mod_php7.c>
  #php_value upload_max_filesize 50M
  #php_value post_max_size 100M
#</IfModule>

我在我的共享主机(ionos/1and1)上安装的所有其他步骤,该主机处理SSH:

环境:

创建PHP 7.4+环境

创建Mysql 5.2+数据库

https://github.com/directus/directus下载Directus Suite并将其推送到FTP或通过ssh git clone git@github.com:directus/directus.git

推送到FTP或git clone。

将管理(子)域名绑定到/public文件夹。

递归设置文件夹/bin的执行权限:$ chmod -R +x ./bin

为文件夹/logs/public/uploads设置写入权限:

  • $ chmod -R +w /logs
  • $ chmod -R +w /public/uploads

安装依赖项:

连接到ssh控制台并导航到Directus的根文件夹

下载Composer: $ curl -sS https://getcomposer.org/installer | /usr/bin/php7.4-cli

检查Composer安装:$ /usr/bin/php7.4-cli composer.phar

检查最新版本:$ /usr/bin/php7.4-cli composer.phar selfupdate

安装依赖项:$ /usr/bin/php7.4-cli composer.phar install

创建项目:

您可以访问URL https://admin.mysite.com/admin/#/install 或使用以下命令行界面设置项目:

配置Directus: $ /usr/bin/php7.4-cli bin/directus install:config -k my-project -h db_host -n db_name -u db_user -p db_pass -d directus_path -a super_admin_token

填充数据库模式: $ /usr/bin/php7.4-cli bin/directus install:database -d directus_path

安装初始配置: $ install:install -e admin_email -p admin_password -t site_name


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接