\documentclass{article}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{hyperref}
\pagestyle{headings}
\begin{document}
\part{Upgrade from Horde 5 / PEAR}
Horde 5 is supposed to run on PHP 5.x - 7.4 and Horde 6 is supposed to run on PHP 7.4 - 8.x.<br />
Also, the filesystem structure of Horde 6 is different. It is recommended NOT to run an inplace upgrade but backup all assets and start

\section{Prerequisites}
\begin{itemize}
\item Copy existing installation's database to a new database. At the end of the installation the schema will be changed and no longer fit for Horde 5.


\item Go to all Horde 5 apps, including horde base, and safe files like
\begin{itemize}
\item registry.local.php


\item conf.php


\item prefs.local.php


\item hooks.php


\item attributes.local.php


\item backends.local.php


\item basically *.local.php


\item registry.d/*


\end{itemize}

\end{itemize}
You normally don't need to keep these:

\begin{itemize}
\item conf.xml


\item prefs.php


\item backends.php


\item attributes.php


\end{itemize}
These come with the code.<br />
Modifying these was not advisable even in horde 5.

\subsection{Web Server Config}
The Web server's webroot needs to point to the /web subdirectory of the root project, not the top directory of the root project.<br />
See fresh install docs for more detail.

\section{Setup a root project}
<pre><code>
git clone https://github.com/maintaina-com/horde-deployment.git
</code></pre>
\subsection{Copy Horde configs}
Mind the different structure:

<pre><code>
old: horde/config/conf.php
new: var/config/horde/conf.php
old: horde/config/*.local.php
new: var/config/horde/
old: horde/config/registry.d
new: var/config/horde/registry.d/

old: horde/nag/conf.php
new: var/config/nag/conf.php
old: horde/nag/config/*.local.php
new: var/config/nag/*.local.php

etc
</code></pre>
\subsection{Editing registry}
If your registry.local.php or registry.d/ snippet contains hardcoded webroot or fileroot, comment out these lines.

\subsection{Install Horde 6}
\subsubsection{Install the base app}
<pre><code>
composer install
</code></pre>
\subsubsection{Install additional apps}
<pre><code>
composer require horde/kronolith \^{}5
composer require horde/turba \^{}5
composer require horde/passwd \^{}6
composer require horde/mnemo \^{}5
composer require horde/content \^{}3
composer require horde/timeobjects \^{}3
composer require horde/imp \^{}7
composer require horde/nag \^{}5
composer require horde/activesync v3.0.0.alpha4
</code></pre>
etc ... see the installing chapter for more details on this step.

\subsection{Upgrade the database}
<pre><code>
./vendor/bin/horde-db-migrate up
</code></pre>
\subsection{Check the Web UI for configs that need upgrading}
Goto the horde/admin/config screen. Check for all apps if there are new settings which need configuration.

\end{document}
