Tiny Tiny RSSを久しぶりに更新したらMySQLのサポートが無くなってて困った話

スポンサーリンク

Tiny Tiny RSS

TinyTiny-RSSとは

Tiny Tiny RSSはレンタルサーバとか自前のサーバに入れて使う、WebベースのRSS/Atomリーダーです。

Tiny Tiny RSS

既存のWebサービスとしてはFeedlyなどがありますが、TinyTiny-RSSは自前のサーバで動くのでサービス終了とか制限に左右されない点と、フィルタなどの機能もデフォルトで充実しており、プラグインでさらに色々拡張できたり自由度が高くて愛用しています。

PHPのバージョンを上げたらエラー

使っているPHPのバージョンが7.4とわりと古かったので、高速化とかセキュリティの向上とか利点ありますよ!みたいにWordPressのダッシュボードに出てたので8.3に上げました。

そしたらTinyTiny-RSSが以下のエラーで動作しなくなりました。

画面上は500のInternal Server Errorで、サーバーのエラーログには以下のようなのが出てました。

PHP Fatal error:  During inheritance of ArrayAccess:

Uncaught Error: Class "ORM" not found

 

TinyTiny-RSSはconfig.phpでPHPのパスが指定できるので、この時点でそれまで動作していた7.4のパス(/usr/bin/php7.4)へ戻せば恐らく復活したのではないかと思いました。

下の部分ですね。

putenv('TTRSS_PHP_EXECUTABLE=/usr/bin/php8.3');

TinyTiny-RSSをアップグレードしたらエラー

しかし、ずいぶんアップデートしてなかったからなーと思って、安易に以下を実行したところ、また違うエラーが・・・

git pull origin master

 

今度は画面上に何故か2回エラーが表示され、サーバのエラーログには何もありません。

Exception while creating PDO object:SQLSTATE[08006] [7] received invalid response to SSL negotiation: ]

Exception while creating PDO object:SQLSTATE[08006] [7] received invalid response to SSL negotiation: ]

SSLネゴシエーションに対して無効な応答を受信しましたみたいなエラーのようですが、言ってる意味がわからない。

データベースにも何か設定が残ってて、それが邪魔してるのかとTT-RSSのデータベースを「mysqldump」でバックアップしておき、削除しても同じエラーのままです。

コミュニティでMySQLのサポートが外されたという投稿を発見

とりあえず以下のTT-RSSのコミュニティを見ていたら、

Tiny Tiny RSS: Community

以下の投稿を発見。

要するにMySQLはTT-RSSのサポートから外し、PostgreSQLを使うようにするみたいな感じで、この投稿が2025/4/14と、4ヶ月も前の投稿なので既にMySQLは切り捨てられたようですね・・・

Heads up: imminent removal of MySQL support from tt-rss (~ April 28, 2025)
I’m done with MySQL in tt-rss. It’s been officially deprecated for years now, and functionally I have no means (nor desi...

さらに調べていると以下のページも発見。

こちらには、「MySQLサポートは2025年4月28日にTT-RSSから削除されました」とあり、MySQLをサポートするTT-RSSの最後のバージョンは「0E4B8B8BD6538F3062D34A3A06AB55531C70042DE78」のGitハッシュだとあります。

New Tiny Tiny RSS Docker Image
A simple, easy to configure Tiny Tiny RSS Docker image with MySQL support.

とりあえず自宅サーバにPostgreSQLを入れて使う

とりあえず自宅で寝る前にチラッと毎日使っているのでTinyTiny-RSSが動かないと困ります。

仕方ないので自宅サーバに「postgresql-server」をインストール、公開ディレクトリに移動し、以下を実行し

git clone https://git.tt-rss.org/fox/tt-rss.git tinytiny-rss

config.phpを修正

ちなみに2025/08/28時点の最新版TT-RSSはPHP8.2以上を要求してくるので8.5を入れました。

putenv('TTRSS_DB_HOST=localhost');
putenv('TTRSS_DB_TYPE=pgsql');
putenv('TTRSS_DB_PORT=5432');
putenv('TTRSS_DB_NAME=データベース名');
putenv('TTRSS_DB_USER=ユーザー名');
putenv('TTRSS_DB_PASS=パスワード');
putenv('TTRSS_SELF_URL_PATH=http://tinytiny-rssのURL');
putenv('TTRSS_PHP_EXECUTABLE=/usr/bin/php85');

そして「mysqldump」で出力しておいたデータベースも以下のように取り込んだところ、ほぼ元の状態で普通に動きました。

mysql -uユーザー名 -pパスワード データベース名 < dump.sql

現時点でXserverでPostgreSQLを使うのは無理(2025/08/28時点)

とりあえず自宅では問題なくTT-RSSが使えるようになりましたが、レンタルしてるXserverで元の状態のように使いたい。。。

しかしXserverは2025/08/28時点でPostgreSQLはサポートしておらず、色々調べていたらphp.iniPostgreSQLらしき設定項目があります。

[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

yumで普通にインストールできてしまうのでは?と思ってyumで検索しても出てきません。

そもそも公式がサポートしてませんと書いてますし駄目っぽいですね。

yum search postgresql

GitでMySQLをサポートしてるコミットまで巻き戻す

あれこれしてるうちに、さっきMySQLをサポートしてる最終バージョンのコミットのハッシュを書いてくれてるサイトを思い出し、Gitで管理されてるし、さっきのハッシュのコミットに巻き戻せば行けるのか?と試してみました。

とりあえずXserverへSSH接続し、動かないTT-RSSのディレクトリをまるごと削除して、再度gitで最新版を落とします。

TT-RSSのディレクトリを作成したいディレクトリに移動して以下を実行します。

git clone https://git.tt-rss.org/fox/tt-rss.git tinytiny-rss

TT-RSSのディレクトリへ移動します

cd tinytiny-rss

指定したハッシュの状態にするには以下のようにします。

<sha1>のところを、さっき書いてくれてたハッシュに置き換えます。

git checkout <sha1>

その前に、MySQLをサポートしてるバージョンに戻ったかどうか判断するために何か特徴をみておきます。

TT-RSSだと「tinytiny-rss/classes/Config.php」の内容がわかりやすいです。

以下は最新版のものですが、DB_TYPEのあたりを一部抜粋すると、以下のように書いてあり、「サポートされているデータベースはPostgressSQLのみです」とあります。

/** this is kept for backwards/plugin compatibility, the only supported database is PostgreSQL
*
* @deprecated usages of `Config::get(Config::DB_TYPE)` should be replaced with default (and only) value: `pgsql` or removed
*/
const DB_TYPE = "DB_TYPE";

では、MySQLがサポートされてたバージョンにしてみます。

git checkout 0e4b8bd6538f3062d34a3a06ab5531c70042de78

実行するとエラーが出ますが無視して大丈夫です。

再度、「tinytiny-rss/classes/Config.php」DB_TYPEあたりを見てみると、、、

データベースタイプは「pgsql または mysql」が指定できるというコメントになってます!
やったー!

 /** database type: pgsql or mysql */
const DB_TYPE = "DB_TYPE";

その後は同様にTT-RSSのフォルダにあるconfig.php(tinytiny-rss/classes/Config.php ではなく tinytiny-rssディレクトリ直下のconfig.php)を修正し、ブラウザからTT-RSSのURLを表示すると設定が進んでいきます。

ちなみにMySQL(またはその派生版)の場合のconfig.phpは以下のような感じです。

putenv('TTRSS_DB_HOST=localhost');
putenv('TTRSS_DB_NAME=データベース名');
putenv('TTRSS_DB_USER=ユーザー名');
putenv('TTRSS_DB_PASS=パスワード');
putenv('TTRSS_SELF_URL_PATH=https://tinytiny-RSSのURL');
putenv('TTRSS_DB_TYPE=mysql');
putenv('TTRSS_DB_PORT=3306');
putenv('TTRSS_PHP_EXECUTABLE=/usr/bin/php8.3');

こんな感じでXserverで駄目にしてしまったTinyTiny-RSSを復活させることができました!

普段からGitを触ってる方からしたら当たり前なのかもしれませんが、ほとんど触ってなかったので用語すらわからず手こずりましたが、何とかなりました。。。

 

おしまいです!

コメントフォーム

タイトルとURLをコピーしました