Hi Joachim, Sorry I forgot. At work I use ondemand policy for PHP fpm. Previously I also used dynamic policy but that don't scale as expected. With dynamic max_children is a hard limit, not with ondemand . ; ondemand - no children are created at startup. Children will be forked when ; new requests will connect. The following parameter are used: ; pm.max_children - the maximum number of children that ; can be alive at the same time. ; pm.process_idle_timeout - The number of seconds after which ; an...
Thank you, a first step in the right direction. After spending the night on it, I'm hesitant. Even in the newly exported JSON files, there were incorrectly encoded characters. I could only correct them manually, searching for the strings one by one for hours. I simply deleted the erroneous translations. Transifex, once again, exports without properly respecting the encoding of the target format. So, now I have serious doubts about the platform's reliability. Should we redo all the translations or...
Sounds like a significant problem. I've done a quick check with the latest SVN and all seems fine. Arabic (multiple versions I think) is listed—I chose one or two of these without the issues previously reported. Mark
Hi Mark, The PHP output of Transifex is buggy for two reasons: Transifex PHP input reader is buggy. It read PHP code with custom rules and doesn't parse exactly like PHP interpreter, so illegal escape sequence are loaded in source strings. After that, garbage in, garbage out. For the specific case provided the machine translation is puzzled by the source string for Arabic. For now, I've simply deleted the erroneous string. Since I have no way to control the output of Transifex, I changed the input/output...
Remove a wrong Arabic translation
Change the format of translations catalogs from PHP to JSON [#742]
Typo
Hmmm. Interesting. It works on Firefox but neither on Chrome nor Safari (even an old Opera). I tried closing all browsers and restarting. Same thing: Firefox is fine, the others not.
ReadOnly user's preferences not saved
The code was in reverse order. I've corrected it. Tonight I'll implement the actual fix for time zone management.
Restore session GC algo from revision r6208 [#743]
For selected resource types (mainly academic, text based), the publication status can now be set (when creating or editing a resource) and it will display for those types when displaying the resource. There are 6 types of status ranging from published to in preparation.
Fix auto mode
Malformed strings in message files cause crash
I'm taking the raw file as it comes out of Transifex. I'm going to see if there's a way in Transifex to protect specific sequences because it's the automatic translation that's doing a poor job.
Malformed strings in message files cause crash
ReadOnly user's preferences not saved
Malformed strings in message files cause crash
Add resourcemiscPublicationStatus to resource_misc table. This will (eventually) account for the publication status of the resource to be used in the bibliographic formatting of the resource. Values are TINYINT(1) with 0 (default) == published, 1 == in press, 2 == accepted, 3 == under review, 4 == submitted. I will work on this over the next few days.
Write Timezone setting to session for a readOnly user's preferences.
Fix default language and timezone in preferences page
Fix default value for timezone in preferences
Fix default value for timezone in preferences
Ensure user's timezone is in the CLOSE footer.
Tidy timezone anmes
Update messages catalogs for timezones
Add an auto mode for user timezone and add translations for timezones
Default timezone for users is 'auto'
50 characters is enough for a timezone name
Default timezone is UTC
Typo in update numbers
Update CMS hooks documentation for the new getPubList hook.
CMS hooks: added getPublist as an action. This will retrieve the resources in the defined publication list for insertion into a CMS or website.
Update CHANGELOG
a) change the hint in Admin|Configure|General display
Ensure browser_tab_id table has autoupdating DATETIME.
If no word is input for QUICKSEARCH, ensure there is a valid error message.
Try another solution to #740 re session_gc().
SessionHandler::gc() permission denied
OK. Let's leave it.
If using browserTabID, fix an issue that caused moderated new user registration to fail (new user was unable to log on).
SessionHandler::gc() permission denied
Hi Mark, The session folder of your php.ini is not well defined. Session files should not be stored in /tmp but a folder dedicated to the current vhost. Thus, the files can be accessed via the web server account. Warning : if you intend to change this you need one vhost by website and one PHP FPM configuration by website. And we cannot change the path for <wikindx_root>/cache/sessions because this is a big security hole.</wikindx_root> The best thing I can do is nothing. Otherwise, I can block recycling...
Amend an incorrect hint message.
SessionHandler::gc() permission denied
Updatedatabase 140 does not appear to have worked in all cases: repeat.
What about putting this (with a check for pre-existing value) after the two if() statements: $maxSessionNotAuthLifetime = $db->queryFetchFirstField(" SELECT configInt FROM config WHERE configName = 'configSessionNotAuthMaxlifetime'; ") ?? PHP_INT_MAX;
run by hand works. So, not sure what happened during update. What is the type on your database? Mine is DATETIME for both.
ALTER TABLE session MODIFY COLUMN sessionLastAccessTimestamp DATETIME NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(); run by hand works. So, not sure what happened during update. What is the type on your database? I will try changing again with update code.
Your modification introduces a subtle bug. When the database is not accessed $maxSessionAuthRememberMeLifetime, $maxSessionAuthLifetime, and $maxSessionNotAuthLifetime should take the default values from constants. This is done by replacing the NULL value returned by queryFetchFirstField by PHP_INT_MAX, and after that taking the most low value. I didn't init these variables with 0 because if code is changed or fail in unexpected way, It is better for subsequent queries to crash, rather than emptying...
My policy is to use the same date type for all database fields. I also use the time provided by the database server as the source for inserting and updating data whenever possible to ensure consistency. Furthermore, I use automatic date options when creating and updating records. I'm not sure if this is universally applied in the code. In fact, the time difference between programs isn't a problem if the time zone is properly included in the recorded information. Errors occur when the time is recorded...
session.sessionLastAccessTimestamp . . . update 140 should have modified the type to DATETIME . . . but this did not happen (see 1.) And if you run it by hand, did it fail?
And the lag of 6 hours also occurs on MariaDB. Interestingly, resource_timestamp timestamp fields are also datetime and also lag 6 hours behind. I guess it has something to do with changing timezones on my laptop moving between Denmark and China. timestamp responds to the server timezone setting, datestamp does not. I notice the mysql 'system time zone' variable is set to CST which is . . . 13 hours behind . . . . . . whereas the mysql server 'time zone' variable is set to 'SYSTEM' (in effect CST)....
And the lag of 6 hours also occurs on MariaDB. Interestingly, resource_timestamp timestamp fields are also datetime and also lag 6 hours behind. I guess it has something to do with changing timezones on my laptop moving between Denmark and China. timestamp responds to the server timezone setting, datestamp does not.
The random logging out is solved. The issue is now the lag . . .
And the lag of 6 hours also occurs on MariaDB.
Some things I notice (MySQL database): session has type TIMESTAMP for sessionLastAccessTimestamp session_browser_tab_id has type DATETIME for sessionbrowsertabTimestamp session.sessionLastAccessTimestamp keeps track with current local time session_browser_tab.sessionbrowsertabTimestamp lags 6 hours behind current local time session.sessionLastAccessTimestamp . . . update 140 should have modified the type to DATETIME . . . but this did not happen (see 1.)
#740: Part fix:
Got it!
The join is LEFT OUTER, not INNER join, so the users table is not required when sessionbroswertabId is 0. The ELSE case return maxSessionNotAuthLifetime for nonAuth access when sessionbroswertabId is 0. This query is 3 in one!
A 6-hour time difference doesn't correspond to your time zone. That's very strange.
I did something similar by commenting out the line at 396 (execution of the SQL delete statement). Everything works as expected (no booting back to login). I've been looking more closely at the SQL to delete from session_browser_tab but still puzzling. I think I need a separate SQL for deleting nonAuth rows as a) there is never a usersId in the users table of 0; b) sessionbrowsertabId of 0 simply means this a nonAuth access; so c) there is no need to join the users table: if sessionbroswertabId is...
Browsing a publication list or browsing as a readOnly user randomly bumps back to the login screen
Hi Mark, As a first step you have only to comment "DELETE" SQL commands in WkxDbSessionHandler\gc(), and test. If the problem disappears, then we will be certain that the origin is the expiration of sessions in this script. Regards,
Browsing a publication list or browsing as a readOnly user randomly bumps back to the login screen
Normal sessions as a readOnly user seem fine. With browserTabID, it seems to be something to do with SESSIONHANDLERS::gc() and the condition in the SQL at line 379. It could be something to do with TEMPSTORAGE line 66. And I have noticed something curious: a new row in the session table is written with the local(host) timestamp; a new row in session_browser_tab is written with the local(host) timestamp minus 6 hours. The database tables are created with the same timestamp protocols. Mark
Minor tidying up: when browsing random metadata and ideas, ensure the next (and, for ideas, also the previous) icons display the correct ALT text instead of e.g., 'Next resource'.
Browsing a publication list or logging on as a readOnly user randomly bumps back to the login screen
Minor improvements to BIBTEX page parsing for imports.
When viewing a single idea + subidea(s) from a list, the 'Return to list' link now returns to the previous place in the list (rather than the start of the list). Additionally, when viewing the list, make each group of idea + subidea(s) more distinct.
Add a SF bug ID to CHANGELOG.
When compressing a list of resources with attachments, the resulting zip file can not be downloaded.
When viewing a single resource from a list, the 'Return to list' link now returns to the previous place in the list (rather than the start o the list).
Update requirements and install documentation.
Update install documentation.
Update requirements documentation.
Update preamble documentation.
Improvements to comments re the last commit.
Correct the order of publication list front page display to resource timestamp rather than publication year—this matches the typical display of the WIKINDX front page and ensurees that newly added entries in the publication list that are missing a publication year are actually displayed.
Hi Joachim, Is it getting better? Will check my own config at work and post it here. Regards,
Switch MariaDB minimum version to 10.6 after 2026-08-31
Typo on Adminer version 5.4.2
When exporting a DOCX file from a list, ensure the interim DOCX folder is deleted after DOCX creation.
If searching a list and compressing attachments to a zip file, the zip file can now be successfully downloaded.
Hi Joachim, Check your logs. Is the website under heavy pressure? For example, from unscrupulous AI bots? Regards,
Hi Joachim, Re the first point, I will have to leave you in Stéphane's capable hands. Re the second point: this should be fixed in the latest SVN. Regards, Mark
Hi Mark and Stéphane, my server is constantly slowing down again, maybe because of php8.4-fpm. In the logs, there are lots of messages like WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers) and then WARNING: [pool www] server reached pm.max_children setting (95), consider raising it. When this message comes, the server gets unresponsive In my www.conf I've got: pm = dynamic pm.max_children = 95 pm.start_servers = 20 pm.min_spare_servers = 10 pm.max_spare_servers...
Tidy up CHANGELOG
Fix an error adding/editing users where there are no resources with creators #737.
Cannot create a new user
OK. The following should fix the issue then (I assume you have access to the code): Replace the line at 1024 with: if (array_key_exists('creatorId', $this->vars)) { $this->formData['creatorId'] = $this->vars['creatorId']; } And, so you don't have the same issue editing a user, do the same with the line at 1106. That should do the trick. The issue is my fault—I didn't check for the existence of resources with creators when adding/editing users. If you have such resources, you can then assign the new...
No, I don't.
Thank you Mikhail. That helps and I now think I know what is happening. Do you have the 'User is creator' select box in the add user form? I suspect not (i.e. you have no resources added or resources with creators). Mark
Hi, Here are the error messages: Warning: Undefined array key "creatorId" in /var/www/html/wikindx/core/modules/admin/ADMINUSER.php on line 1024 Fatal error: Uncaught TypeError: UTF8\mb_trim(): Argument #1 ($string) must be of type string, null given, called in /var/www/html/wikindx/core/modules/admin/ADMINUSER.php on line 1024 and defined in /var/www/html/wikindx/core/libs/UTF8.php:213 Stack trace: #0 /var/www/html/wikindx/core/modules/admin/ADMINUSER.php(1024): UTF8\mb_trim() #1 /var/www/html/wikindx/core/modules/admin/ADMINUSER.php(214):...
OK. A 500 error can be quite unspecific as to its cause. Can you try the following please? Turn on error reporting in WIKINDX: Admin|Configure . . . Debugging "Print PHP errors and warnings to the screen." Is there now a more specific error message on the screen when you try to add a user? Check for error messages in the server's error log. Mark
I tried both ways - with all details and only first row -- no difference. In Firefox browser I get a blank page, in Edge I get the error message "This page isn’t working right now". And the user name does not matter, I tried different. And with different passwords.
I tried both ways - with all details and only first row -- no difference. In Firefox browser I get a blank page, in Edge I get the error message "This page isn’t working right now".
Thanks Mikhail. PHP and WIKINDX version match mine. I added a user 'julia' without email enabled entering just password and email address—the user was created without issues. Are you adding other details (the second row of the form)?
Hi again, I forgot to mention that the program is installed on a Red Hat server and I am using it online. Version 6.12.1. Php 8.2
Hello Mark, Can you duplicate here the exact username you are trying to enter? julia On the form for adding the new user, do you see this message? "Because email is enabled, a new user will be emailed a link inviting them to enter their own password." No. And, as far as I understand, email is not emabled. "Enable mail operations": No Or are you able to enter their password yourself? Yes, I am.