seblucas / cops

Calibre OPDS (and HTML) PHP Server : web-based light alternative to Calibre content server / Calibre2OPDS to serve ebooks (epub, mobi, pdf, ...)
http://blog.slucas.fr/en/oss/calibre-opds-php-server
GNU General Public License v2.0
1.43k stars 229 forks source link

Stops working when searching some words #471

Open magarto opened 4 years ago

magarto commented 4 years ago

Hi,

Since last months, when I click on a search result, COPS stops working. By example, if I search "Lovecrat" it shows 1 author and some books but if I click on the author result, it doesn't load anything. But if I search other word like "Tolkien" it works... it is really weird.

If i try to look in error.log, it does not show anything. I only have this error but I think it is not related:

2019/11/19 10:21:58 [error] 1051#1051: *20453 FastCGI sent in stderr: "PHP message: PHP Warning: Cannot modify header information - headers already sent by (output started at /home/pi/"myweb"/public_html/epubreader.php:3) in /home/pi/"myweb"/public_html/epubreader.php on line 14" while reading upstream, client: 47.60.39.252, server: "myweb", request: "GET /epubreader.php?data=27346&db= HTTP/2.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "myweb", referrer: "https://"myweb"/index.php?page=3&id=761"

My server is

Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:    10
Codename:   buster

So package php5-intl is not available, but php-intl is installed

checkconfig.php shows:

Check if PHP version is correct
OK (5.6.40-0+deb8u2)
Check if GD is properly installed and loaded
OK
Check if Sqlite is properly installed and loaded
OK
Check if libxml is properly installed and loaded
OK
Check if Json is properly installed and loaded
OK
Check if mbstring is properly installed and loaded
OK
**Check if intl is properly installed and loaded
Please install the php5-intl / php7.0-intl extension and make sure it's enabled
Check if Normalizer class is properly installed and loaded
Please make sure intl is enabled in your php.ini
Check if the rendering will be done on client side or server side
Client side rendering**
Check if Calibre database path is not an URL
OK
Check if Calibre database file exists and is readable
OK
Check if Calibre database file can be opened with PHP
OK
Check if Calibre database file contains at least some of the needed tables
OK

But php7.3 and php5 has extension=intl enabled in fpm/php.ini

php --ini

Configuration File (php.ini) Path: /etc/php/7.3/cli
Loaded Configuration File:         /etc/php/7.3/cli/php.ini
Scan for additional .ini files in: /etc/php/7.3/cli/conf.d
Additional .ini files parsed:      /etc/php/7.3/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.3/cli/conf.d/10-opcache.ini,
/etc/php/7.3/cli/conf.d/10-pdo.ini,
/etc/php/7.3/cli/conf.d/15-xml.ini,
/etc/php/7.3/cli/conf.d/20-bz2.ini,
/etc/php/7.3/cli/conf.d/20-calendar.ini,
/etc/php/7.3/cli/conf.d/20-ctype.ini,
/etc/php/7.3/cli/conf.d/20-dom.ini,
/etc/php/7.3/cli/conf.d/20-exif.ini,
/etc/php/7.3/cli/conf.d/20-fileinfo.ini,
/etc/php/7.3/cli/conf.d/20-ftp.ini,
/etc/php/7.3/cli/conf.d/20-gd.ini,
/etc/php/7.3/cli/conf.d/20-gettext.ini,
/etc/php/7.3/cli/conf.d/20-iconv.ini,
/etc/php/7.3/cli/conf.d/20-intl.ini,
/etc/php/7.3/cli/conf.d/20-json.ini,
/etc/php/7.3/cli/conf.d/20-mbstring.ini,
/etc/php/7.3/cli/conf.d/20-mysqli.ini,
/etc/php/7.3/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.3/cli/conf.d/20-pdo_sqlite.ini,
/etc/php/7.3/cli/conf.d/20-phar.ini,
/etc/php/7.3/cli/conf.d/20-posix.ini,
/etc/php/7.3/cli/conf.d/20-readline.ini,
/etc/php/7.3/cli/conf.d/20-shmop.ini,
/etc/php/7.3/cli/conf.d/20-simplexml.ini,
/etc/php/7.3/cli/conf.d/20-sockets.ini,
/etc/php/7.3/cli/conf.d/20-sqlite3.ini,
/etc/php/7.3/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.3/cli/conf.d/20-sysvsem.ini,
/etc/php/7.3/cli/conf.d/20-sysvshm.ini,
/etc/php/7.3/cli/conf.d/20-tokenizer.ini,
/etc/php/7.3/cli/conf.d/20-wddx.ini,
/etc/php/7.3/cli/conf.d/20-xmlreader.ini,
/etc/php/7.3/cli/conf.d/20-xmlwriter.ini,
/etc/php/7.3/cli/conf.d/20-xsl.ini,
/etc/php/7.3/cli/conf.d/20-zip.ini

php5 --init:

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/05-opcache.ini,
/etc/php5/cli/conf.d/10-pdo.ini,
/etc/php5/cli/conf.d/20-apcu.ini,
/etc/php5/cli/conf.d/20-gd.ini,
/etc/php5/cli/conf.d/20-json.ini,
/etc/php5/cli/conf.d/20-mcrypt.ini,
/etc/php5/cli/conf.d/20-mysql.ini,
/etc/php5/cli/conf.d/20-mysqli.ini,
/etc/php5/cli/conf.d/20-pdo_mysql.ini,
/etc/php5/cli/conf.d/20-pdo_sqlite.ini,
/etc/php5/cli/conf.d/20-sqlite3.ini
magarto commented 4 years ago

I have uninstalled php5 and changed nginx configuration so it loads php7-fpm and now it gives me this error: 2020/02/02 22:04:49 [error] 3721#3721: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 81.203.225.XXX, server: "myserver", request: "GET /checkconfig.php HTTP/2.0", upstream: "fastcgi://unix:/var/run/php/php7.3-fpm.sock:", host: "myserver"

/var/run/php/php7.3-fpm.sock size is 0

magarto commented 4 years ago

Fixed, I have COPS using php7 instead of php5, but I have still the same problem when searching for some words.

I checked that file /var/run/php/php7.3-fpm.sock user and group was different than my COPS directory, so I edited /etc/php/7.3/fpm/pool.d/www.conf user and group to match it and restarted service, so now /var/run/php/php7.3-fpm.sock user and group match with COPS directory

magarto commented 4 years ago

My _configlocal.php config is:

<?php

    if (!isset($config))
        $config = array();

    $config['calibre_directory'] = './kindle/';
    $config['calibre_internal_directory'] = '';
    $config['cops_full_url'] = 'https://"myweb".com';
    $config['cops_recentbooks_limit'] = '50';
    $config['cops_author_name'] = "Magarto";
    $config['cops_author_uri'] = "https://"myweb".com";
    $config['cops_author_email'] = "myemail";
    $config['cops_title_default'] = "Kindle";
    $config['cops_subtitle_default'] = "";
    $config['cops_x_accel_redirect'] = "X-Accel-Redirect";
    $config['cops_opds_thumbnail_height'] = "164";
    $config['cops_html_thumbnail_height'] = "164";
    $config['cops_icon'] = "favicon.ico";
    $config['cops_show_icons'] = "1";
    $config['default_timezone'] = "Europe/Paris";
    $config['cops_prefered_format'] = array ("EPUB", "PDF", "AZW3", "AZW", "MOBI", "CBR", "CBZ");
    $config['cops_use_url_rewriting'] = "0";
    $config['cops_generate_invalid_opds_stream'] = "0";
    $config['cops_max_item_per_page'] = "-1";
    $config['cops_author_split_first_letter'] = "1";
    $config['cops_titles_split_first_letter'] = "1";
    $config['cops_use_fancyapps'] = "1";
    $config['cops_update_epub-metadata'] = "0";
    $config['cops_books_filter'] = array ();
    $config['cops_calibre_custom_column'] = array ();
    $config['cops_provide_kepub'] = "0";
    $config['cops_mail_configuration'] = array( "smtp.host"     => "smtp.gmail.com", "smtp.username" => "myemail", "smtp.password" => "mypassword",  "smtp.secure"   => "ssl", "address.from"  => "myemail" );
    $config['cops_html_tag_filter'] = "0";
    $config['cops_thumbnail_handling'] = "";
    $config['cops_server_side_render'] = "Kindle\/1\.0|Kindle\/2\.0|Kindle\/3\.0|EBRD1101|EBRD1201|cybook";
    $config ['cops_ignored_categories'] = array ();
    $config ['cops_fetch_protect'] = "0";
    $config ['cops_normalized_search'] = "1";
    $config['cops_basic_authentication'] = NULL;
    $config['cops_template'] = 'default';
    $config['cops_language'] = '';
magarto commented 4 years ago

Any help?