# Special Topics

Some specific system software combinations may require some additional configurations to work with XOOPS. Here are some details of known issues and guidance for dealing with them.

## SELinux Environments

Certain files and directories need to be writable during install, upgrade and normal operation of XOOPS. In a traditional Linux environment, this is accomplished by ensuring that the system user that the web server runs under has permissions on the XOOPS directories, usually by setting the appropriate group for those directories.

SELinux enabled systems (such as CentOS and RHEL) have an additional, a security context, that can restrict a processes ability to change the file system. These systems may require changes to the security context for XOOPS to function correctly.

XOOPS expects to be able to freely write to certain directories during normal operation. Additionally, during XOOPS installs and upgrades, certain files must be writable as well.

During normal operation, XOOPS expects to be able to write files and create sub directories in these directories:

* `uploads` in the main XOOPS web root
* `xoops_data` wherever it is relocated during the install

During an install or upgrade process XOOPS will need to write to this file:

* `mainfile.php` in the main XOOPS web root

For a typical CentOS Apache based system, the security context changes might be accomplished with these commands:

```
chcon -Rv --type=httpd_sys_rw_content_t /path/to/web/root/uploads/
chcon -Rv --type=httpd_sys_rw_content_t /path/to/xoops_data/
```

You can make mainfile.php writable with:

```
chcon -v --type=httpd_sys_rw_content_t /path/to/web/root/mainfile.php
```

Note: When installing, you can copy an empty mainfile.php from the *extras* directory.

You should also allow httpd to send mail:

```
setsebool -P httpd_can_sendmail=1
```

Other settings you might need include:

Allow httpd to make network connections, i.e. fetch rss feeds or make an API calls:

```
setsebool -P httpd_can_network_connect 1
```

Enable network connection to a database with:

```
setsebool -P httpd_can_network_connect_db=1
```

For more information consult your system documentation and/or systems administrator.

## MySQL 8.0 Environments

MySQL 8.0 is not supported in all PHP versions. Even in the supported versions, issues with the PHP *mysqlnd* library may require the MySQL server's *default-authentication-plugin* to be set to *mysql\_native\_password* to function correctly.

Additional background may be found here:

<https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xoops.gitbook.io/xoops-install-upgrade/doc-v2.5.10/installation/specialtopics.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
