wallabag
wallabag copied to clipboard
Attempted to call an undefined method when using browser extension or android app
Environment
- Version: 2.4.3
- Installation: git clone
- PHP version: 7.3
- OS: raspbian 64 bit
- Database: mariadb
- Parameters: below
My app/config/parameters.yml
is:
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
database_name: wallabag
database_user: wallabaguser
database_password: <password>
database_path: null
database_table_prefix: wallabag_
database_socket: null
database_charset: utf8mb4
domain_name: 'https://<url>'
server_name: 'https://<url>'
mailer_transport: smtp
mailer_user: null
mailer_password: null
mailer_host: 127.0.0.1
mailer_port: false
mailer_encryption: null
mailer_auth_mode: null
locale: en
secret: CHANGE_ME_TO_SOMETHING_SECRET_AND_RANDOM
twofactor_auth: true
twofactor_sender: [email protected]
fosuser_registration: true
fosuser_confirmation: true
fos_oauth_server_access_token_lifetime: 3600
fos_oauth_server_refresh_token_lifetime: 1209600
from_email: [email protected]
rss_limit: 50
rabbitmq_host: localhost
rabbitmq_port: 5672
rabbitmq_user: guest
rabbitmq_password: guest
rabbitmq_prefetch_count: 10
redis_scheme: tcp
redis_host: localhost
redis_port: 6379
redis_path: null
redis_password: null
sentry_dsn: null
What steps will reproduce the bug?
Upon using the chrome extension or trying to access articles or share to the android app I get hit with server failures (error 500 on the android app). The browser extension will result in a clipped web page, but the android app fails completely. Upon checking the prod.log I see:
request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\UndefinedMethodException: "Attempted to call an undefined method named "getAttributes" of class "ReflectionClass"." at /var/www/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php line 26 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\UndefinedMethodException(code: 0): Attempted to call an undefined method named \"getAttributes\" of class \"ReflectionClass\". at /var/www/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php:26)"} []
I'm wondering if maybe there's a missing php dependency somewhere.
Anything else in the log? It's almost impossible to debug it with only that line.
Sorry, here's the whole log (with html removed for brevity.
[2022-03-09 16:41:17] request.INFO: Matched route "api_post_entries". {"route":"api_post_entries","route_parameters":{"_controller":"Wallabag\\ApiBundle\\Controller\\EntryRestController::postEntriesAction","_format":"json","_route":"api_post_entries"},"request_uri":"https://wallabag.landonserver.tk/api/entries.json","method":"POST"} []
[2022-03-09 16:41:18] app.DEBUG: Restricted access config enabled? {"enabled":0} []
[2022-03-09 16:41:18] graby.INFO: Graby is ready to fetch [] []
[2022-03-09 16:41:18] graby.INFO: . looking for site config for joplinapp.org in primary folder {"host":"joplinapp.org"} []
[2022-03-09 16:41:18] graby.INFO: Appending site config settings from global.txt [] []
[2022-03-09 16:41:18] graby.INFO: . looking for site config for global in primary folder {"host":"global"} []
[2022-03-09 16:41:18] graby.INFO: ... found site config global.txt {"host":"global.txt"} []
[2022-03-09 16:41:18] graby.INFO: Cached site config with key: joplinapp.org {"key":"joplinapp.org"} []
[2022-03-09 16:41:18] graby.INFO: . looking for site config for global in primary folder {"host":"global"} []
[2022-03-09 16:41:18] graby.INFO: ... found site config global.txt {"host":"global.txt"} []
[2022-03-09 16:41:18] graby.INFO: Appending site config settings from global.txt [] []
[2022-03-09 16:41:18] graby.INFO: Cached site config with key: global {"key":"global"} []
[2022-03-09 16:41:18] graby.INFO: Cached site config with key: joplinapp.org.merged {"key":"joplinapp.org.merged"} []
[2022-03-09 16:41:18] graby.INFO: Fetching url: https://joplinapp.org/help/#desktop-applications {"url":"https://joplinapp.org/help/#desktop-applications"} []
[2022-03-09 16:41:18] graby.INFO: Trying using method "get" on url "https://joplinapp.org/help/" {"method":"get","url":"https://joplinapp.org/help/"} []
[2022-03-09 16:41:18] graby.INFO: Use default user-agent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.92 Safari/535.2" for url "https://joplinapp.org/help/" {"user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.92 Safari/535.2","url":"https://joplinapp.org/help/"} []
[2022-03-09 16:41:18] graby.INFO: Use default referer "http://www.google.co.uk/url?sa=t&source=web&cd=1" for url "https://joplinapp.org/help/" {"referer":"http://www.google.co.uk/url?sa=t&source=web&cd=1","url":"https://joplinapp.org/help/"} []
[2022-03-09 16:41:18] app.INFO: Sending request: GET https://joplinapp.org/help/ 1.1 {"request":"[object] (Laminas\\Diactoros\\Request: {})"} []
[2022-03-09 16:41:19] app.INFO: Received response: 200 OK 1.1 for request: GET https://joplinapp.org/help/ 1.1 {"request":"[object] (Laminas\\Diactoros\\Request: {})","response":"[object] (GuzzleHttp\\Psr7\\Response: {})","milliseconds":916} []
[2022-03-09 16:41:19] graby.INFO: Data fetched: array{"effective_url":"https://joplinapp.org/help/","body":"(only length for debug): 145405","headers":{"connection":"keep-alive","content-length":"145405","server":"GitHub.com","content-type":"text/html; charset=utf-8","x-origin-cache":"HIT","last-modified":"Wed, 09 Mar 2022 18:17:29 GMT","access-control-allow-origin":"*","strict-transport-security":"max-age=31556952","etag":"\"6228ef39-237fd\"","expires":"Wed, 09 Mar 2022 22:51:19 GMT","cache-control":"max-age=600","x-proxy-cache":"MISS","x-github-request-id":"BA78:76D8:5F7058:911CC5:62292D0F","accept-ranges":"bytes","date":"Wed, 09 Mar 2022 22:41:19 GMT","via":"1.1 varnish","age":"0","x-served-by":"cache-yyz4556-YYZ","x-cache":"MISS","x-cache-hits":"0","x-timer":"S1646865680.653385,VS0,VE21","vary":"Accept-Encoding","x-fastly-request-id":"3bfbd0d42c916f1187aed26a2f9e6ea0f8b557d0"},"status":200} {"data":{"effective_url":"https://joplinapp.org/help/","body":"(only length for debug): 145405","headers":{"connection":"keep-alive","content-length":"145405","server":"GitHub.com","content-type":"text/html; charset=utf-8","x-origin-cache":"HIT","last-modified":"Wed, 09 Mar 2022 18:17:29 GMT","access-control-allow-origin":"*","strict-transport-security":"max-age=31556952","etag":"\"6228ef39-237fd\"","expires":"Wed, 09 Mar 2022 22:51:19 GMT","cache-control":"max-age=600","x-proxy-cache":"MISS","x-github-request-id":"BA78:76D8:5F7058:911CC5:62292D0F","accept-ranges":"bytes","date":"Wed, 09 Mar 2022 22:41:19 GMT","via":"1.1 varnish","age":"0","x-served-by":"cache-yyz4556-YYZ","x-cache":"MISS","x-cache-hits":"0","x-timer":"S1646865680.653385,VS0,VE21","vary":"Accept-Encoding","x-fastly-request-id":"3bfbd0d42c916f1187aed26a2f9e6ea0f8b557d0"},"status":200}} []
[2022-03-09 16:41:19] graby.INFO: Treating as UTF-8 {"encoding":"utf-8"} []
[2022-03-09 16:41:19] graby.DEBUG: Fetched HTML {"html": <deleted for brevity>} []
[2022-03-09 16:41:19] graby.INFO: Looking for site config files to see if single page link exists [] []
[2022-03-09 16:41:19] graby.INFO: Returning cached and merged site config for joplinapp.org {"host":"joplinapp.org"} []
[2022-03-09 16:41:19] graby.INFO: No "single_page_link" config found [] []
[2022-03-09 16:41:19] graby.INFO: Attempting to extract content [] []
[2022-03-09 16:41:19] graby.INFO: Returning cached and merged site config for joplinapp.org {"host":"joplinapp.org"} []
[2022-03-09 16:41:19] graby.DEBUG: Actual site config {"siteConfig":"[object] (Graby\\SiteConfig\\SiteConfig: {\"title\":[\"//meta[@property=\\\"og:title\\\"]/@content\"],\"body\":[],\"author\":[],\"date\":[\"//meta[@property=\\\"article:published_time\\\"]/@content\"],\"strip\":[\"//*[contains(@class, 'google-dfp-ad-wrapper')]\",\"//iframe/@srcdoc\"],\"src_lazy_load_attr\":null,\"strip_id_or_class\":[\"sharedaddy\",\"i-amphtml-replaced-content\"],\"strip_image_src\":[\"doubleclick.net\"],\"native_ad_clue\":[],\"http_header\":[],\"tidy\":null,\"autodetect_on_failure\":null,\"prune\":null,\"test_url\":[],\"if_page_contains\":[],\"single_page_link\":[],\"next_page_link\":[],\"parser\":null,\"find_string\":[\"<amp-img\",\"</amp-img>\"],\"replace_string\":[\"<img\",\"<!-- nothing -->\"],\"cache_key\":null,\"requires_login\":false,\"not_logged_in_xpath\":null,\"login_uri\":null,\"login_username_field\":null,\"login_password_field\":null,\"login_extra_fields\":[],\"skip_json_ld\":false,\"wrap_in\":[]})"} []
[2022-03-09 16:41:19] graby.INFO: Strings replaced: 0 (find_string and/or replace_string) {"count":0} []
[2022-03-09 16:41:19] graby.DEBUG: HTML after site config strings replacements {"html":<deleted for brevity>} []
[2022-03-09 16:41:19] graby.INFO: Attempting to parse HTML with libxml {"parser":"libxml"} []
[2022-03-09 16:41:19] graby.INFO: Body size after Readability: 139985 {"length":139985} []
[2022-03-09 16:41:19] graby.DEBUG: Body after Readability {"dom_saveXML":<deleted for brevity>} []
[2022-03-09 16:41:19] graby.INFO: Opengraph "og:" data: array{"og_url":"https://joplinapp.org/help/","og_title":"Joplin documentation","og_description":""} {"ogData":{"og_url":"https://joplinapp.org/help/","og_title":"Joplin documentation","og_description":""}} []
[2022-03-09 16:41:19] graby.INFO: Opengraph "article:" data: array[] {"ogData":[]} []
[2022-03-09 16:41:19] graby.INFO: Trying //meta[@property="og:title"]/@content for title {"pattern":"//meta[@property=\"og:title\"]/@content"} []
[2022-03-09 16:41:19] graby.INFO: title matched: Joplin documentation {"title":"Joplin documentation"} []
[2022-03-09 16:41:19] graby.INFO: ...XPath match: {pattern} ["pattern","//meta[@property=\"og:title\"]/@content"] []
[2022-03-09 16:41:19] graby.INFO: Trying //meta[@property="article:published_time"]/@content for date {"pattern":"//meta[@property=\"article:published_time\"]/@content"} []
[2022-03-09 16:41:19] graby.INFO: Trying //html[@lang]/@lang for language {"pattern":"//html[@lang]/@lang"} []
[2022-03-09 16:41:19] graby.INFO: Language matched: en {"language":"en"} []
[2022-03-09 16:41:19] graby.INFO: Trying //*[contains(@class, 'google-dfp-ad-wrapper')] to strip element {"pattern":"//*[contains(@class, 'google-dfp-ad-wrapper')]"} []
[2022-03-09 16:41:19] graby.INFO: Trying //iframe/@srcdoc to strip element {"pattern":"//iframe/@srcdoc"} []
[2022-03-09 16:41:19] graby.INFO: Trying sharedaddy to strip element {"string":"sharedaddy"} []
[2022-03-09 16:41:19] graby.INFO: Trying i-amphtml-replaced-content to strip element {"string":"i-amphtml-replaced-content"} []
[2022-03-09 16:41:20] graby.INFO: Stripping 14 empty a elements {"length":14} []
[2022-03-09 16:41:20] graby.DEBUG: DOM after site config stripping {"dom_saveXML":<deleted for brevity>} []
[2022-03-09 16:41:20] graby.INFO: Using Readability [] []
[2022-03-09 16:41:21] graby.INFO: Date is bad (strtotime failed): {"date":null} []
[2022-03-09 16:41:21] graby.INFO: Detecting body [] []
[2022-03-09 16:41:21] graby.INFO: Pruning content [] []
[2022-03-09 16:41:21] graby.INFO: Success ? 1 {"is_success":true} []
[2022-03-09 16:41:22] graby.DEBUG: Body after cleanupHtml, before cleanupXss {"html": <deleted for brevity>} []
[2022-03-09 16:41:22] graby.INFO: Filtering HTML to remove XSS [] []
[2022-03-09 16:41:22] graby.INFO: Returning data (most interesting ones): array{"html":"(only length for debug): 132183","status":200,"title":"Joplin documentation","language":"en","date":null,"authors":[],"url":"https://joplinapp.org/help/","image":null,"native_ad":false,"headers":{"connection":"keep-alive","content-length":"145405","server":"GitHub.com","content-type":"text/html; charset=utf-8","x-origin-cache":"HIT","last-modified":"Wed, 09 Mar 2022 18:17:29 GMT","access-control-allow-origin":"*","strict-transport-security":"max-age=31556952","etag":"\"6228ef39-237fd\"","expires":"Wed, 09 Mar 2022 22:51:19 GMT","cache-control":"max-age=600","x-proxy-cache":"MISS","x-github-request-id":"BA78:76D8:5F7058:911CC5:62292D0F","accept-ranges":"bytes","date":"Wed, 09 Mar 2022 22:41:19 GMT","via":"1.1 varnish","age":"0","x-served-by":"cache-yyz4556-YYZ","x-cache":"MISS","x-cache-hits":"0","x-timer":"S1646865680.653385,VS0,VE21","vary":"Accept-Encoding","x-fastly-request-id":"3bfbd0d42c916f1187aed26a2f9e6ea0f8b557d0"}} {"data":{"html":"(only length for debug): 132183","status":200,"title":"Joplin documentation","language":"en","date":null,"authors":[],"url":"https://joplinapp.org/help/","image":null,"native_ad":false,"headers":{"connection":"keep-alive","content-length":"145405","server":"GitHub.com","content-type":"text/html; charset=utf-8","x-origin-cache":"HIT","last-modified":"Wed, 09 Mar 2022 18:17:29 GMT","access-control-allow-origin":"*","strict-transport-security":"max-age=31556952","etag":"\"6228ef39-237fd\"","expires":"Wed, 09 Mar 2022 22:51:19 GMT","cache-control":"max-age=600","x-proxy-cache":"MISS","x-github-request-id":"BA78:76D8:5F7058:911CC5:62292D0F","accept-ranges":"bytes","date":"Wed, 09 Mar 2022 22:41:19 GMT","via":"1.1 varnish","age":"0","x-served-by":"cache-yyz4556-YYZ","x-cache":"MISS","x-cache-hits":"0","x-timer":"S1646865680.653385,VS0,VE21","vary":"Accept-Encoding","x-fastly-request-id":"3bfbd0d42c916f1187aed26a2f9e6ea0f8b557d0"}}} []
[2022-03-09 16:41:22] app.DEBUG: Extracting images from content to provide a default preview picture [] []
[2022-03-09 16:41:22] app.DEBUG: 446 pictures found [] []
[2022-03-09 16:41:22] app.DEBUG: DownloadImagesSubscriber: disabled. [] []
[2022-03-09 16:41:22] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\UndefinedMethodException: "Attempted to call an undefined method named "getAttributes" of class "ReflectionClass"." at /var/www/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php line 26 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\UndefinedMethodException(code: 0): Attempted to call an undefined method named \"getAttributes\" of class \"ReflectionClass\". at /var/www/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php:26)"} []
[2022-03-09 16:45:20] request.INFO: Matched route "api_post_entries". {"route":"api_post_entries","route_parameters":{"_controller":"Wallabag\\ApiBundle\\Controller\\EntryRestController::postEntriesAction","_format":"json","_route":"api_post_entries"},"request_uri":"https://wallabag.landonserver.tk/api/entries.json","method":"POST"} []
[2022-03-09 16:45:20] app.DEBUG: Restricted access config enabled? {"enabled":0} []
[2022-03-09 16:45:20] graby.INFO: . looking for site config for christophergs.com in primary folder {"host":"christophergs.com"} []
[2022-03-09 16:45:20] graby.INFO: Appending site config settings from global.txt [] []
[2022-03-09 16:45:20] graby.INFO: . looking for site config for global in primary folder {"host":"global"} []
[2022-03-09 16:45:20] graby.INFO: ... found site config global.txt {"host":"global.txt"} []
[2022-03-09 16:45:20] graby.INFO: Cached site config with key: christophergs.com {"key":"christophergs.com"} []
[2022-03-09 16:45:20] graby.INFO: . looking for site config for global in primary folder {"host":"global"} []
[2022-03-09 16:45:20] graby.INFO: ... found site config global.txt {"host":"global.txt"} []
[2022-03-09 16:45:20] graby.INFO: Appending site config settings from global.txt [] []
[2022-03-09 16:45:20] graby.INFO: Cached site config with key: global {"key":"global"} []
[2022-03-09 16:45:20] graby.INFO: Cached site config with key: christophergs.com.merged {"key":"christophergs.com.merged"} []
[2022-03-09 16:45:20] graby.DEBUG: Actual site config {"siteConfig":"[object] (Graby\\SiteConfig\\SiteConfig: {\"title\":[\"//meta[@property=\\\"og:title\\\"]/@content\"],\"body\":[],\"author\":[],\"date\":[\"//meta[@property=\\\"article:published_time\\\"]/@content\"],\"strip\":[\"//*[contains(@class, 'google-dfp-ad-wrapper')]\",\"//iframe/@srcdoc\"],\"src_lazy_load_attr\":null,\"strip_id_or_class\":[\"sharedaddy\",\"i-amphtml-replaced-content\"],\"strip_image_src\":[\"doubleclick.net\"],\"native_ad_clue\":[],\"http_header\":[],\"tidy\":null,\"autodetect_on_failure\":null,\"prune\":null,\"test_url\":[],\"if_page_contains\":[],\"single_page_link\":[],\"next_page_link\":[],\"parser\":null,\"find_string\":[\"<amp-img\",\"</amp-img>\"],\"replace_string\":[\"<img\",\"<!-- nothing -->\"],\"cache_key\":null,\"requires_login\":false,\"not_logged_in_xpath\":null,\"login_uri\":null,\"login_username_field\":null,\"login_password_field\":null,\"login_extra_fields\":[],\"skip_json_ld\":false,\"wrap_in\":[]})"} []
[2022-03-09 16:45:20] graby.INFO: Strings replaced: 0 (find_string and/or replace_string) {"count":0} []
[2022-03-09 16:45:20] graby.DEBUG: HTML after site config strings replacements {"html":<deleted for brevity>} []
[2022-03-09 16:45:20] graby.INFO: Attempting to parse HTML with libxml {"parser":"libxml"} []
[2022-03-09 16:45:20] graby.INFO: Body size after Readability: 5773 {"length":5773} []
[2022-03-09 16:45:20] graby.DEBUG: Body after Readability {"dom_saveXML": <deleted for brevity>} []
[2022-03-09 16:45:20] graby.INFO: Opengraph "og:" data: array[] {"ogData":[]} []
[2022-03-09 16:45:20] graby.INFO: Opengraph "article:" data: array[] {"ogData":[]} []
[2022-03-09 16:45:20] graby.INFO: Trying //meta[@property="og:title"]/@content for title {"pattern":"//meta[@property=\"og:title\"]/@content"} []
[2022-03-09 16:45:20] graby.INFO: Trying //meta[@property="article:published_time"]/@content for date {"pattern":"//meta[@property=\"article:published_time\"]/@content"} []
[2022-03-09 16:45:20] graby.INFO: Trying //html[@lang]/@lang for language {"pattern":"//html[@lang]/@lang"} []
[2022-03-09 16:45:20] graby.INFO: Trying //meta[@name="DC.language"]/@content for language {"pattern":"//meta[@name=\"DC.language\"]/@content"} []
[2022-03-09 16:45:20] graby.INFO: Trying //*[contains(@class, 'google-dfp-ad-wrapper')] to strip element {"pattern":"//*[contains(@class, 'google-dfp-ad-wrapper')]"} []
[2022-03-09 16:45:20] graby.INFO: Trying //iframe/@srcdoc to strip element {"pattern":"//iframe/@srcdoc"} []
[2022-03-09 16:45:20] graby.INFO: Trying sharedaddy to strip element {"string":"sharedaddy"} []
[2022-03-09 16:45:20] graby.INFO: Trying i-amphtml-replaced-content to strip element {"string":"i-amphtml-replaced-content"} []
[2022-03-09 16:45:20] graby.DEBUG: DOM after site config stripping {"dom_saveXML":<deleted for brevity>} []
[2022-03-09 16:45:20] graby.INFO: Using Readability [] []
[2022-03-09 16:45:20] graby.INFO: Date is bad (strtotime failed): {"date":null} []
[2022-03-09 16:45:20] graby.INFO: Success ? {"is_success":false} []
[2022-03-09 16:45:20] graby.INFO: Cleanup html failed. Return given content (a bit cleaned) [] []
[2022-03-09 16:45:20] graby.INFO: Filtering HTML to remove XSS [] []
[2022-03-09 16:45:20] app.DEBUG: Extracting images from content to provide a default preview picture [] []
[2022-03-09 16:45:20] app.DEBUG: 0 pictures found [] []
[2022-03-09 16:45:20] app.DEBUG: DownloadImagesSubscriber: disabled. [] []
[2022-03-09 16:45:21] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\UndefinedMethodException: "Attempted to call an undefined method named "getAttributes" of class "ReflectionClass"." at /var/www/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php line 26 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\UndefinedMethodException(code: 0): Attempted to call an undefined method named \"getAttributes\" of class \"ReflectionClass\". at /var/www/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php:26)"} []
Hi. I'm seeing this, too, both with the official Android app as well as interacting with the API (with code that I've been successfully using for the last couple of years, so I know it's stable). Here is the relevant part from my ~/wallabag/var/logs/prod.log file after attempting to sync with the official Android application (slightly reformatted for legibility, can paste someplace if requested):
[2023-01-07 18:05:11] request.INFO: Matched route "api_get_entries".
{"route":"api_get_entries","route_parameters":{"_controller":"Wallabag\\ApiBundle\\
Controller\\EntryRestController::getEntriesAction", "_format":"json",
"_route":"api_get_entries"}, "request_uri":"https://foo.bar./api/entries.json?
detail=full&order=asc&page=1&perPage=30&since=1672992332&sort=updated",
"method":"GET"} []
[2023-01-07 18:05:12] request.CRITICAL: Uncaught PHP Exception Symfony\Component
\Debug\Exception\UndefinedMethodException: "Attempted to call an undefined method named
"getAttributes" of class "ReflectionClass"." at /home/drwho/wallabag/vendor/jms/serializer
/src/Metadata/Driver/AttributeDriver/AttributeReader.php line 26 {"exception":"[object]
(Symfony\\Component\\Debug\\Exception\\UndefinedMethodException(code: 0): Attempted
to call an undefined method named \"getAttributes\" of class \"ReflectionClass\". at
/home/drwho/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver
/AttributeReader.php:26)"} []
[2023-01-07 18:05:13] request.INFO: Matched route "api_get_entries".
{"route":"api_get_entries","route_parameters":{"_controller":"Wallabag\\ApiBundle\\
Controller\\EntryRestController::getEntriesAction",
"_format":"json","_route":"api_get_entries"},"request_uri":
"https://foo.bar/api/entries.json?detail=full&order=asc&page=1&perPage=30&
since=1672992332&sort=updated","method":"GET"} []
[2023-01-07 18:05:13] request.CRITICAL: Uncaught PHP Exception Symfony\Component\
Debug\Exception\UndefinedMethodException: "Attempted to call an undefined method named
"getAttributes" of class "ReflectionClass"." at /home/drwho/wallabag/vendor/jms/
serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php line 26
{"exception":"[object] (Symfony\\Component\\Debug\\Exception\\UndefinedMethodException
(code: 0): Attempted to call an undefined method named \"getAttributes\" of class
\"ReflectionClass\". at /home/drwho/wallabag/vendor/jms/serializer/src/Metadata/Driver
/AttributeDriver/AttributeReader.php:26)"} []
PHP v7.4, official packages from the Ubuntu v20.04 LTS repo.
Hello @virtadpt and @landowark.
Thank you for reporting this issue. I see that you have quite old php versions.
Can you reproduce this issue with PHP >= 8.1 ?
I was having the same issue under PHP 7.4 but I can reproduce under PHP 8.1.6 too.
[2023-08-07 21:52:16] request.INFO: Matched route "api_get_info". {"route":"api_get_info","route_parameters":{"_route":"api_get_info","_format":"json","_controller":"Wallabag\\ApiBundle\\Controller\\WallabagRestController::getInfoAction"},"request_uri":"https://wallabag.XXXXX.XXX/api/info.json","method":"GET"} []
[2023-08-07 21:52:16] security.INFO: Populated the TokenStorage with an anonymous Token. [] []
[2023-08-07 21:52:16] request.CRITICAL: Uncaught PHP Exception Symfony\Component\ErrorHandler\Error\UndefinedMethodError: "Attempted to call an undefined method named "getAttributes" of class "ReflectionClass"." at /var/www/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php line 29 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Attempted to call an undefined method named \"getAttributes\" of class \"ReflectionClass\". at /var/www/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php:29)"} []
Hello, I also have this issue since updating on PHP 7.4
[2023-08-29T13:18:45.906197+02:00] graby.INFO: Filtering HTML to remove XSS [] []
[2023-08-29T13:18:46.029769+02:00] app.DEBUG: DownloadImagesSubscriber: disabled. [] []
[2023-08-29T13:18:46.053931+02:00] request.CRITICAL: Uncaught PHP Exception Symfony\Component\ErrorHandler\Error\UndefinedMethodError: "Attempted to call an undefined method named "getAttributes" of class "ReflectionClass"." at /srv/web/read.mart-e.be/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php line 29 {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\UndefinedMethodError(code: 0): Attempted to call an undefined method named \"getAttributes\" of class \"ReflectionClass\". at /srv/web/read.mart-e.be/wallabag/vendor/jms/serializer/src/Metadata/Driver/AttributeDriver/AttributeReader.php:29)"} []
I also have the same issue with a webhost install, on both php 7.4 and 8.2.
I have just updated from 2.6.6 to 2.6.7, cleared the var/cache/*
and wallabag seems to work again just fine. Not sure if a coincidence or another package update but it seems solved for me.
I had the same, it started working again and I didn't investigate what changed. 2.6.7 seems to work fine.