Error 500 in Web portal module

Hi,

i have a problem for web portal module. It is active and set up completely and all third party companies can log in normally and see their profiles. I have activated all options for them to be able to see - invoices, orders and commercial proposals. The problem is when they click on a link to check all of the issued proposals they get Error 500. The same is happening when they click to invoices and orders as well.

Dolibarr version is 23.0.2

Any ideas how can i fix that?

1 Like

Hey @nikolay86

First you look in your webservers logfile and then you look in the dolibarr.log file if you have enabled the debug logging module in setup, modules/applications. Set it to the highest loglevel and then do the webportal login and so on.

Check the log files for what happens

1 Like

The only one in the log file from Dolibarr showing after trying to access the resources though web portal is the below record:

2026-05-01 05:24:15 NOTICE  213.91.249.196  3923487   1065 --- Access to GET /public/webportal/index.php - action=, massaction=
2026-05-01 05:24:15 DEBUG   213.91.249.196  3923487   1065 sql=SELECT transkey, transvalue FROM llxrp_overwrite_trans where (lang='en_US' OR lang IS NULL) AND entity IN (0, 0,1) ORDER BY lang DESC
2026-05-01 05:24:15 INFO    213.91.249.196  3923487   1065 --- End access to /public/webportal/index.php

please find your webservers log file, that would probably include the error

Nothing is being recorded in the Apache error log for this error 500. The only record that is repeating is an error for a missing root.txt file

I found the Issue ticket for that exact problem opened Webportal Proposals, Sales orders and Invoices links not working #37552 but sadly on one has been working on the problem, or at least there is no one assigned.

okay, let’s try something else.

When I post just that line

SELECT transkey, transvalue FROM llxrp_overwrite_trans where (lang='en_US' OR lang IS NULL) AND entity IN (0, 0,1) ORDER BY lang DESC LIMIT 0, 25

Then I get this error

#1146 - Table 'dolidb.llxrp_overwrite_trans' doesn't exist

However I am testing this on the development branch, which does have this table

SELECT * FROM `llx_overwrite_trans`

I wish that you would run a command like this and report back where the culprit is

grep -irl rp_overwrite_trans htdocs

The only one in the log file from Dolibarr showing after trying to access the resources though web portal is the below record:

2026-05-01 05:24:15 NOTICE  213.91.249.196  3923487   1065 --- Access to GET /public/webportal/index.php - action=, massaction=
2026-05-01 05:24:15 DEBUG   213.91.249.196  3923487   1065 sql=SELECT transkey, transvalue FROM llxrp_overwrite_trans where (lang='en_US' OR lang IS NULL) AND entity IN (0, 0,1) ORDER BY lang DESC
2026-05-01 05:24:15 INFO    213.91.249.196  3923487   1065 --- End access to /public/webportal/index.php

How should i run this line? And from where?

you would run it in a terminal standing in the dolibarr base directionary

The search doesn’t found any results

okay, neither do i :frowning:

Can you get a list of tables in your database?

All table names in the DB:

llxrp_accounting_account
llxrp_accounting_analytic_account
llxrp_accounting_analytic_axis
llxrp_accounting_analytic_distribution
llxrp_accounting_bookkeeping
llxrp_accounting_bookkeeping_piece
llxrp_accounting_bookkeeping_tmp
llxrp_accounting_fiscalyear
llxrp_accounting_groups_account
llxrp_accounting_journal
llxrp_accounting_system
llxrp_actioncomm
llxrp_actioncomm_extrafields
llxrp_actioncomm_reminder
llxrp_actioncomm_resources
llxrp_adherent
llxrp_adherent_extrafields
llxrp_adherent_type
llxrp_adherent_type_extrafields
llxrp_adherent_type_lang
llxrp_bank
llxrp_bank_account
llxrp_bank_account_extrafields
llxrp_bank_extrafields
llxrp_bank_url
llxrp_blockedlog
llxrp_blockedlog_authority
llxrp_bookmark
llxrp_bordereau_cheque
llxrp_boxes
llxrp_boxes_def
llxrp_categorie
llxrp_categories_extrafields
llxrp_categorie_account
llxrp_categorie_actioncomm
llxrp_categorie_contact
llxrp_categorie_fournisseur
llxrp_categorie_invoice
llxrp_categorie_lang
llxrp_categorie_member
llxrp_categorie_order
llxrp_categorie_product
llxrp_categorie_project
llxrp_categorie_project_task
llxrp_categorie_propal
llxrp_categorie_societe
llxrp_categorie_supplier_invoice
llxrp_categorie_supplier_order
llxrp_categorie_supplier_proposal
llxrp_categorie_user
llxrp_categorie_warehouse
llxrp_category_bankline
llxrp_chargesociales
llxrp_commande
llxrp_commandedet
llxrp_commandedet_extrafields
llxrp_commande_extrafields
llxrp_commande_fournisseur
llxrp_commande_fournisseurdet
llxrp_commande_fournisseurdet_extrafields
llxrp_commande_fournisseur_extrafields
llxrp_commande_fournisseur_log
llxrp_comment
llxrp_const
llxrp_contrat
llxrp_contratdet
llxrp_contratdet_extrafields
llxrp_contrat_extrafields
llxrp_cronjob
llxrp_c_actioncomm
llxrp_c_action_trigger
llxrp_c_availability
llxrp_c_barcode_type
llxrp_c_chargesociales
llxrp_c_civility
llxrp_c_country
llxrp_c_currencies
llxrp_c_departements
llxrp_c_ecotaxe
llxrp_c_effectif
llxrp_c_email_senderprofile
llxrp_c_email_templates
llxrp_c_field_list
llxrp_c_format_cards
llxrp_c_forme_juridique
llxrp_c_holiday_types
llxrp_c_hrm_department
llxrp_c_hrm_function
llxrp_c_hrm_public_holiday
llxrp_c_incoterms
llxrp_c_input_method
llxrp_c_input_reason
llxrp_c_invoice_subtype
llxrp_c_lead_status
llxrp_c_paiement
llxrp_c_paper_format
llxrp_c_partnership_type
llxrp_c_payment_term
llxrp_c_product_nature
llxrp_c_product_thirdparty_relation_type
llxrp_c_propalst
llxrp_c_prospectcontactlevel
llxrp_c_prospectlevel
llxrp_c_regions
llxrp_c_revenuestamp
llxrp_c_shipment_mode
llxrp_c_shipment_package_type
llxrp_c_socialnetworks
llxrp_c_stcomm
llxrp_c_stcommcontact
llxrp_c_transport_mode
llxrp_c_tva
llxrp_c_typent
llxrp_c_type_contact
llxrp_c_type_fees
llxrp_c_type_resource
llxrp_c_units
llxrp_c_ziptown
llxrp_default_values
llxrp_delivery
llxrp_deliverydet
llxrp_deliverydet_extrafields
llxrp_delivery_extrafields
llxrp_document_model
llxrp_ecm_directories
llxrp_ecm_directories_extrafields
llxrp_ecm_files
llxrp_ecm_files_extrafields
llxrp_element_categorie
llxrp_element_contact
llxrp_element_element
llxrp_element_resources
llxrp_element_time
llxrp_emailcollector_emailcollector
llxrp_emailcollector_emailcollectoraction
llxrp_emailcollector_emailcollectorfilter
llxrp_entrepot
llxrp_entrepot_extrafields
llxrp_establishment
llxrp_eventorganization_conferenceorboothattendee
llxrp_eventorganization_conferenceorboothattendee_extrafields
llxrp_events
llxrp_event_element
llxrp_expedition
llxrp_expeditiondet
llxrp_expeditiondet_batch
llxrp_expeditiondet_extrafields
llxrp_expedition_extrafields
llxrp_expedition_package
llxrp_expensereport
llxrp_expensereport_det
llxrp_expensereport_det_extrafields
llxrp_expensereport_extrafields
llxrp_export_model
llxrp_extrafields
llxrp_facture
llxrp_facturedet
llxrp_facturedet_extrafields
llxrp_facturedet_rec
llxrp_facturedet_rec_extrafields
llxrp_facture_extrafields
llxrp_facture_fourn
llxrp_facture_fourn_det
llxrp_facture_fourn_det_extrafields
llxrp_facture_fourn_det_rec
llxrp_facture_fourn_det_rec_extrafields
llxrp_facture_fourn_extrafields
llxrp_facture_fourn_rec
llxrp_facture_fourn_rec_extrafields
llxrp_facture_rec
llxrp_facture_rec_extrafields
llxrp_fichinter
llxrp_fichinterdet
llxrp_fichinterdet_extrafields
llxrp_fichinterdet_rec
llxrp_fichinter_extrafields
llxrp_fichinter_rec
llxrp_holiday
llxrp_holiday_config
llxrp_holiday_extrafields
llxrp_holiday_logs
llxrp_holiday_users
llxrp_import_model
llxrp_inventory
llxrp_inventorydet
llxrp_inventory_extrafields
llxrp_links
llxrp_localtax
llxrp_mailing
llxrp_mailing_advtarget
llxrp_mailing_cibles
llxrp_mailing_unsubscribe
llxrp_menu
llxrp_multicurrency
llxrp_multicurrency_rate
llxrp_notify
llxrp_notify_def
llxrp_notify_def_object
llxrp_oauth_state
llxrp_oauth_token
llxrp_object_lang
llxrp_onlinesignature
llxrp_overwrite_trans
llxrp_paiement
llxrp_paiementcharge
llxrp_paiementfourn
llxrp_paiementfourn_facturefourn
llxrp_paiement_extrafields
llxrp_paiement_facture
llxrp_partnership
llxrp_partnership_extrafields
llxrp_paymentexpensereport_expensereport
llxrp_payment_donation
llxrp_payment_expensereport
llxrp_payment_loan
llxrp_payment_salary
llxrp_payment_various
llxrp_payment_vat
llxrp_pos_cash_fence
llxrp_pos_cash_fence_extrafields
llxrp_prelevement
llxrp_prelevement_bons
llxrp_prelevement_demande
llxrp_prelevement_lignes
llxrp_prelevement_rejet
llxrp_printing
llxrp_product
llxrp_product_association
llxrp_product_attribute
llxrp_product_attribute_value
llxrp_product_batch
llxrp_product_customer_price
llxrp_product_customer_price_extrafields
llxrp_product_customer_price_log
llxrp_product_extrafields
llxrp_product_fournisseur_price
llxrp_product_fournisseur_price_extrafields
llxrp_product_fournisseur_price_log
llxrp_product_lang
llxrp_product_lot
llxrp_product_lot_extrafields
llxrp_product_price
llxrp_product_pricerules
llxrp_product_price_by_qty
llxrp_product_price_extrafields
llxrp_product_stock
llxrp_product_thirdparty
llxrp_product_warehouse_properties
llxrp_projet
llxrp_projet_extrafields
llxrp_projet_task
llxrp_projet_task_extrafields
llxrp_propal
llxrp_propaldet
llxrp_propaldet_extrafields
llxrp_propal_extrafields
llxrp_propal_merge_pdf_product
llxrp_reception
llxrp_receptiondet_batch
llxrp_receptiondet_batch_extrafields
llxrp_reception_extrafields
llxrp_resource
llxrp_resource_extrafields
llxrp_rights_def
llxrp_salary
llxrp_salary_extrafields
llxrp_societe
llxrp_societe_account
llxrp_societe_commerciaux
llxrp_societe_contacts
llxrp_societe_extrafields
llxrp_societe_prices
llxrp_societe_remise
llxrp_societe_remise_except
llxrp_societe_remise_supplier
llxrp_societe_rib
llxrp_socpeople
llxrp_socpeople_extrafields
llxrp_stock_mouvement
llxrp_stock_mouvement_extrafields
llxrp_subscription
llxrp_supplier_proposal
llxrp_supplier_proposaldet
llxrp_supplier_proposaldet_extrafields
llxrp_supplier_proposal_extrafields
llxrp_tva
llxrp_user
llxrp_usergroup
llxrp_usergroup_extrafields
llxrp_usergroup_rights
llxrp_usergroup_user
llxrp_user_alert
llxrp_user_clicktodial
llxrp_user_employment
llxrp_user_extrafields
llxrp_user_param
llxrp_user_rib
llxrp_user_rights
llxrp_webhook_history

okay, so you have that table llxrp_overwrite_trans.

make sure you run debug level 7.
post more lines - loading of the page before the page that fails on load, or if it is when pressing a button, load the page with that button, then press the button.

Finally, get some logs from your apache server, even just the access log

2026-05-02 14:42:06 NOTICE  213.91.249.196  1074102   1065 --- Access to POST /public/webportal/index.php - action=, massaction=
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT transkey, transvalue FROM llxrp_overwrite_trans where (lang='bg_BG' OR lang IS NULL) AND entity IN (0, 0,1) ORDER BY lang DESC
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 Context::getThirdPartyAccountFromLogin Try to find the third-party account id for login"BG204481372" and site="dolibarr_portal"
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT sa.rowid as id, sa.pass_crypted FROM llxrp_societe_account as sa WHERE sa.login = 'BG204481372' AND sa.site = 'dolibarr_portal' AND sa.status = 1 AND sa.entity IN (1)
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT t.rowid, t.entity, t.login, t.pass_encoding, t.pass_crypted, t.pass_temp, t.fk_soc, t.site, t.fk_website, t.site_account, t.key_account, t.date_last_login, t.date_previous_login, t.date_last_reset_password, t.note_private, t.date_creation, t.tms, t.fk_user_creat, t.fk_user_modif, t.import_key, t.status FROM llxrp_societe_account as t WHERE t.rowid = 2 LIMIT 1
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'societe_account' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT u.rowid, u.lastname, u.firstname, u.employee, u.gender, u.civility as civility_code, u.birth, u.job, u.email, u.email_oauth2, u.personal_email, u.socialnetworks, u.signature, u.office_phone, u.office_fax, u.user_mobile, u.personal_mobile, u.address, u.zip, u.town, u.fk_state as state_id, u.fk_country as country_id, u.admin, u.login, u.note_private, u.note_public, u.pass, u.pass_crypted, u.pass_temp, u.api_key, u.fk_soc, u.fk_socpeople, u.fk_member, u.fk_user, u.ldap_sid, u.fk_user_expense_validator, u.fk_user_holiday_validator, fk_user_creat as user_creation_id, fk_user_modif as user_modification_id, u.statut as status, u.lang, u.entity, u.datec as datec, GREATEST(u.tms, uef.tms) as datem, u.datelastlogin as datel, u.datepreviouslogin as datep, u.flagdelsessionsbefore, u.iplastlogin, u.ippreviouslogin, u.datelastpassvalidation, u.datestartvalidity, u.dateendvalidity, u.photo as photo, u.openid as openid, u.accountancy_code_user_general, u.accountancy_code, u.thm, u.tjm, u.salary, u.salaryextra, u.weeklyhours, u.color, u.dateemployment, u.dateemploymentend, u.fk_warehouse, u.ref_ext, u.default_range, u.default_c_exp_tax_cat, u.national_registration_number, u.ref_employee, c.code as country_code, c.label as country, d.code_departement as state_code, d.nom as state, s.label as label_establishment, u.fk_establishment FROM llxrp_user as u LEFT JOIN llxrp_user_extrafields as uef ON uef.fk_object = u.rowid LEFT JOIN llxrp_c_country as c ON u.fk_country = c.rowid LEFT JOIN llxrp_c_departements as d ON u.fk_state = d.rowid LEFT JOIN llxrp_establishment as s ON u.fk_establishment = s.rowid WHERE u.rowid = 1 ORDER BY u.entity ASC
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'user' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT s.rowid, s.nom as name, s.name_alias, s.entity, s.ref_ext, s.address, s.datec as date_creation, s.prefix_comm, s.status, s.fk_warehouse, s.price_level, GREATEST(s.tms, sef.tms) as date_modification, s.fk_user_creat, s.fk_user_modif, s.phone, s.phone_mobile, s.fax, s.email, s.socialnetworks, s.url, s.zip, s.town, s.note_private, s.note_public, s.client, s.fournisseur, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6, s.capital, s.tva_intra, s.fk_typent as typent_id, s.fk_effectif as effectif_id, s.fk_forme_juridique as forme_juridique_code, s.birth, s.webservices_url, s.webservices_key, s.model_pdf, s.last_main_doc, s.accountancy_code_customer_general, s.code_compta, s.accountancy_code_supplier_general, s.code_compta_fournisseur, s.accountancy_code_buy, s.accountancy_code_sell, s.vat_reverse_charge as soc_vat_reverse_charge, s.code_client, s.code_fournisseur, s.parent, s.barcode, s.fk_departement as state_id, s.fk_pays as country_id, s.fk_stcomm, s.mode_reglement, s.cond_reglement, s.deposit_percent, s.transport_mode, s.fk_account, s.tva_assuj, s.mode_reglement_supplier, s.cond_reglement_supplier, s.transport_mode_supplier, s.localtax1_assuj, s.localtax1_value, s.localtax2_assuj, s.localtax2_value, s.fk_prospectlevel, s.default_lang, s.logo, s.logo_squarred, s.fk_shipping_method, s.outstanding_limit, s.import_key, s.canvas, s.fk_incoterms, s.location_incoterms, s.order_min_amount, s.supplier_order_min_amount, s.fk_multicurrency, s.multicurrency_code, fj.libelle as forme_juridique, e.libelle as effectif, c.code as country_code, c.label as country, d.code_departement as state_code, d.nom as state, r.rowid as region_id, r.code_region as region_code, st.libelle as stcomm, st.picto as stcomm_picto, te.code as typent_code, i.libelle as label_incoterms, s.remise_client, s.remise_supplier FROM llxrp_societe as s LEFT JOIN llxrp_societe_extrafields as sef ON sef.fk_object=s.rowid LEFT JOIN llxrp_c_effectif as e ON s.fk_effectif = e.id LEFT JOIN llxrp_c_country as c ON s.fk_pays = c.rowid LEFT JOIN llxrp_c_stcomm as st ON s.fk_stcomm = st.id LEFT JOIN llxrp_c_forme_juridique as fj ON s.fk_forme_juridique = fj.code LEFT JOIN llxrp_c_departements as d ON s.fk_departement = d.rowid LEFT JOIN llxrp_c_regions as r ON d.fk_region = r.code_region  LEFT JOIN llxrp_c_typent as te ON s.fk_typent = te.id LEFT JOIN llxrp_c_incoterms as i ON s.fk_incoterms = i.rowid WHERE s.entity IN (1) AND s.rowid = 2
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'societe' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 WebPortalMember::fetch
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT d.rowid, d.ref, d.ref_ext, d.civility as civility_code, d.gender, d.firstname, d.lastname, d.societe as company, d.fk_soc as socid, d.statut, d.public, d.address, d.zip, d.town, d.note_private, d.note_public, d.email, d.url, d.socialnetworks, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass, d.pass_crypted, d.photo, d.fk_adherent_type, d.morphy, d.entity, d.datec as datec, GREATEST(d.tms, aef.tms) as datem, d.datefin as datefin, d.default_lang, d.birth as birthday, d.datevalid as datev, d.country, d.state_id, d.model_pdf, c.rowid as country_id, c.code as country_code, c.label as country, dep.nom as state, dep.code_departement as state_code, t.libelle as type, t.subscription as subscription, u.rowid as user_id, u.login as user_login FROM llxrp_adherent_type as t, llxrp_adherent as d LEFT JOIN llxrp_adherent_extrafields as aef ON aef.fk_object = d.rowid LEFT JOIN llxrp_c_country as c ON d.country = c.rowid LEFT JOIN llxrp_c_departements as dep ON d.state_id = dep.rowid LEFT JOIN llxrp_user as u ON d.rowid = u.fk_member WHERE d.fk_adherent_type = t.rowid AND d.entity IN (1) AND d.fk_soc=2
2026-05-02 14:42:06 INFO    213.91.249.196  1074102   1065 --- End access to /public/webportal/index.php
2026-05-02 14:42:06 NOTICE  213.91.249.196  1074102   1065 --- Access to GET /public/webportal/css/style.css.php - action=, massaction= NOTOKENRENEWAL=1
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT transkey, transvalue FROM llxrp_overwrite_trans where (lang='bg_BG' OR lang IS NULL) AND entity IN (0, 0,1) ORDER BY lang DESC
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT t.rowid, t.entity, t.login, t.pass_encoding, t.pass_crypted, t.pass_temp, t.fk_soc, t.site, t.fk_website, t.site_account, t.key_account, t.date_last_login, t.date_previous_login, t.date_last_reset_password, t.note_private, t.date_creation, t.tms, t.fk_user_creat, t.fk_user_modif, t.import_key, t.status FROM llxrp_societe_account as t WHERE t.rowid = 2 LIMIT 1
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'societe_account' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT u.rowid, u.lastname, u.firstname, u.employee, u.gender, u.civility as civility_code, u.birth, u.job, u.email, u.email_oauth2, u.personal_email, u.socialnetworks, u.signature, u.office_phone, u.office_fax, u.user_mobile, u.personal_mobile, u.address, u.zip, u.town, u.fk_state as state_id, u.fk_country as country_id, u.admin, u.login, u.note_private, u.note_public, u.pass, u.pass_crypted, u.pass_temp, u.api_key, u.fk_soc, u.fk_socpeople, u.fk_member, u.fk_user, u.ldap_sid, u.fk_user_expense_validator, u.fk_user_holiday_validator, fk_user_creat as user_creation_id, fk_user_modif as user_modification_id, u.statut as status, u.lang, u.entity, u.datec as datec, GREATEST(u.tms, uef.tms) as datem, u.datelastlogin as datel, u.datepreviouslogin as datep, u.flagdelsessionsbefore, u.iplastlogin, u.ippreviouslogin, u.datelastpassvalidation, u.datestartvalidity, u.dateendvalidity, u.photo as photo, u.openid as openid, u.accountancy_code_user_general, u.accountancy_code, u.thm, u.tjm, u.salary, u.salaryextra, u.weeklyhours, u.color, u.dateemployment, u.dateemploymentend, u.fk_warehouse, u.ref_ext, u.default_range, u.default_c_exp_tax_cat, u.national_registration_number, u.ref_employee, c.code as country_code, c.label as country, d.code_departement as state_code, d.nom as state, s.label as label_establishment, u.fk_establishment FROM llxrp_user as u LEFT JOIN llxrp_user_extrafields as uef ON uef.fk_object = u.rowid LEFT JOIN llxrp_c_country as c ON u.fk_country = c.rowid LEFT JOIN llxrp_c_departements as d ON u.fk_state = d.rowid LEFT JOIN llxrp_establishment as s ON u.fk_establishment = s.rowid WHERE u.rowid = 1 ORDER BY u.entity ASC
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'user' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT s.rowid, s.nom as name, s.name_alias, s.entity, s.ref_ext, s.address, s.datec as date_creation, s.prefix_comm, s.status, s.fk_warehouse, s.price_level, GREATEST(s.tms, sef.tms) as date_modification, s.fk_user_creat, s.fk_user_modif, s.phone, s.phone_mobile, s.fax, s.email, s.socialnetworks, s.url, s.zip, s.town, s.note_private, s.note_public, s.client, s.fournisseur, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6, s.capital, s.tva_intra, s.fk_typent as typent_id, s.fk_effectif as effectif_id, s.fk_forme_juridique as forme_juridique_code, s.birth, s.webservices_url, s.webservices_key, s.model_pdf, s.last_main_doc, s.accountancy_code_customer_general, s.code_compta, s.accountancy_code_supplier_general, s.code_compta_fournisseur, s.accountancy_code_buy, s.accountancy_code_sell, s.vat_reverse_charge as soc_vat_reverse_charge, s.code_client, s.code_fournisseur, s.parent, s.barcode, s.fk_departement as state_id, s.fk_pays as country_id, s.fk_stcomm, s.mode_reglement, s.cond_reglement, s.deposit_percent, s.transport_mode, s.fk_account, s.tva_assuj, s.mode_reglement_supplier, s.cond_reglement_supplier, s.transport_mode_supplier, s.localtax1_assuj, s.localtax1_value, s.localtax2_assuj, s.localtax2_value, s.fk_prospectlevel, s.default_lang, s.logo, s.logo_squarred, s.fk_shipping_method, s.outstanding_limit, s.import_key, s.canvas, s.fk_incoterms, s.location_incoterms, s.order_min_amount, s.supplier_order_min_amount, s.fk_multicurrency, s.multicurrency_code, fj.libelle as forme_juridique, e.libelle as effectif, c.code as country_code, c.label as country, d.code_departement as state_code, d.nom as state, r.rowid as region_id, r.code_region as region_code, st.libelle as stcomm, st.picto as stcomm_picto, te.code as typent_code, i.libelle as label_incoterms, s.remise_client, s.remise_supplier FROM llxrp_societe as s LEFT JOIN llxrp_societe_extrafields as sef ON sef.fk_object=s.rowid LEFT JOIN llxrp_c_effectif as e ON s.fk_effectif = e.id LEFT JOIN llxrp_c_country as c ON s.fk_pays = c.rowid LEFT JOIN llxrp_c_stcomm as st ON s.fk_stcomm = st.id LEFT JOIN llxrp_c_forme_juridique as fj ON s.fk_forme_juridique = fj.code LEFT JOIN llxrp_c_departements as d ON s.fk_departement = d.rowid LEFT JOIN llxrp_c_regions as r ON d.fk_region = r.code_region  LEFT JOIN llxrp_c_typent as te ON s.fk_typent = te.id LEFT JOIN llxrp_c_incoterms as i ON s.fk_incoterms = i.rowid WHERE s.entity IN (1) AND s.rowid = 2
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'societe' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 WebPortalMember::fetch
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074102   1065 sql=SELECT d.rowid, d.ref, d.ref_ext, d.civility as civility_code, d.gender, d.firstname, d.lastname, d.societe as company, d.fk_soc as socid, d.statut, d.public, d.address, d.zip, d.town, d.note_private, d.note_public, d.email, d.url, d.socialnetworks, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass, d.pass_crypted, d.photo, d.fk_adherent_type, d.morphy, d.entity, d.datec as datec, GREATEST(d.tms, aef.tms) as datem, d.datefin as datefin, d.default_lang, d.birth as birthday, d.datevalid as datev, d.country, d.state_id, d.model_pdf, c.rowid as country_id, c.code as country_code, c.label as country, dep.nom as state, dep.code_departement as state_code, t.libelle as type, t.subscription as subscription, u.rowid as user_id, u.login as user_login FROM llxrp_adherent_type as t, llxrp_adherent as d LEFT JOIN llxrp_adherent_extrafields as aef ON aef.fk_object = d.rowid LEFT JOIN llxrp_c_country as c ON d.country = c.rowid LEFT JOIN llxrp_c_departements as dep ON d.state_id = dep.rowid LEFT JOIN llxrp_user as u ON d.rowid = u.fk_member WHERE d.fk_adherent_type = t.rowid AND d.entity IN (1) AND d.fk_soc=2
2026-05-02 14:42:06 INFO    213.91.249.196  1074102   1065 --- End access to /public/webportal/css/style.css.php
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074104   1065 DefaultValues::fetchAll
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074104   1065 sql=SELECT rowid, type, user_id, page, param, value FROM llxrp_default_values as t WHERE 1 = 1 AND ((t.user_id IN (0,0)) AND (entity IN (1,1)))
2026-05-02 14:42:06 NOTICE  213.91.249.196  1074104   1065 --- Access to GET /public/webportal/js/lib_head.js.php - action=, massaction= NOTOKENRENEWAL=1
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074104   1065 sql=SELECT transkey, transvalue FROM llxrp_overwrite_trans where (lang='bg_BG' OR lang IS NULL) AND entity IN (0, 0,1) ORDER BY lang DESC
2026-05-02 14:42:06 NOTICE  213.91.249.196  1074103   1065 --- Access to GET /public/webportal/css/themes/custom.css.php - action=, massaction= NOTOKENRENEWAL=1
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT transkey, transvalue FROM llxrp_overwrite_trans where (lang='bg_BG' OR lang IS NULL) AND entity IN (0, 0,1) ORDER BY lang DESC
2026-05-02 14:42:06 INFO    213.91.249.196  1074104   1065 --- End access to /public/webportal/js/lib_head.js.php
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT t.rowid, t.entity, t.login, t.pass_encoding, t.pass_crypted, t.pass_temp, t.fk_soc, t.site, t.fk_website, t.site_account, t.key_account, t.date_last_login, t.date_previous_login, t.date_last_reset_password, t.note_private, t.date_creation, t.tms, t.fk_user_creat, t.fk_user_modif, t.import_key, t.status FROM llxrp_societe_account as t WHERE t.rowid = 2 LIMIT 1
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'societe_account' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT u.rowid, u.lastname, u.firstname, u.employee, u.gender, u.civility as civility_code, u.birth, u.job, u.email, u.email_oauth2, u.personal_email, u.socialnetworks, u.signature, u.office_phone, u.office_fax, u.user_mobile, u.personal_mobile, u.address, u.zip, u.town, u.fk_state as state_id, u.fk_country as country_id, u.admin, u.login, u.note_private, u.note_public, u.pass, u.pass_crypted, u.pass_temp, u.api_key, u.fk_soc, u.fk_socpeople, u.fk_member, u.fk_user, u.ldap_sid, u.fk_user_expense_validator, u.fk_user_holiday_validator, fk_user_creat as user_creation_id, fk_user_modif as user_modification_id, u.statut as status, u.lang, u.entity, u.datec as datec, GREATEST(u.tms, uef.tms) as datem, u.datelastlogin as datel, u.datepreviouslogin as datep, u.flagdelsessionsbefore, u.iplastlogin, u.ippreviouslogin, u.datelastpassvalidation, u.datestartvalidity, u.dateendvalidity, u.photo as photo, u.openid as openid, u.accountancy_code_user_general, u.accountancy_code, u.thm, u.tjm, u.salary, u.salaryextra, u.weeklyhours, u.color, u.dateemployment, u.dateemploymentend, u.fk_warehouse, u.ref_ext, u.default_range, u.default_c_exp_tax_cat, u.national_registration_number, u.ref_employee, c.code as country_code, c.label as country, d.code_departement as state_code, d.nom as state, s.label as label_establishment, u.fk_establishment FROM llxrp_user as u LEFT JOIN llxrp_user_extrafields as uef ON uef.fk_object = u.rowid LEFT JOIN llxrp_c_country as c ON u.fk_country = c.rowid LEFT JOIN llxrp_c_departements as d ON u.fk_state = d.rowid LEFT JOIN llxrp_establishment as s ON u.fk_establishment = s.rowid WHERE u.rowid = 1 ORDER BY u.entity ASC
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'user' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT s.rowid, s.nom as name, s.name_alias, s.entity, s.ref_ext, s.address, s.datec as date_creation, s.prefix_comm, s.status, s.fk_warehouse, s.price_level, GREATEST(s.tms, sef.tms) as date_modification, s.fk_user_creat, s.fk_user_modif, s.phone, s.phone_mobile, s.fax, s.email, s.socialnetworks, s.url, s.zip, s.town, s.note_private, s.note_public, s.client, s.fournisseur, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6, s.capital, s.tva_intra, s.fk_typent as typent_id, s.fk_effectif as effectif_id, s.fk_forme_juridique as forme_juridique_code, s.birth, s.webservices_url, s.webservices_key, s.model_pdf, s.last_main_doc, s.accountancy_code_customer_general, s.code_compta, s.accountancy_code_supplier_general, s.code_compta_fournisseur, s.accountancy_code_buy, s.accountancy_code_sell, s.vat_reverse_charge as soc_vat_reverse_charge, s.code_client, s.code_fournisseur, s.parent, s.barcode, s.fk_departement as state_id, s.fk_pays as country_id, s.fk_stcomm, s.mode_reglement, s.cond_reglement, s.deposit_percent, s.transport_mode, s.fk_account, s.tva_assuj, s.mode_reglement_supplier, s.cond_reglement_supplier, s.transport_mode_supplier, s.localtax1_assuj, s.localtax1_value, s.localtax2_assuj, s.localtax2_value, s.fk_prospectlevel, s.default_lang, s.logo, s.logo_squarred, s.fk_shipping_method, s.outstanding_limit, s.import_key, s.canvas, s.fk_incoterms, s.location_incoterms, s.order_min_amount, s.supplier_order_min_amount, s.fk_multicurrency, s.multicurrency_code, fj.libelle as forme_juridique, e.libelle as effectif, c.code as country_code, c.label as country, d.code_departement as state_code, d.nom as state, r.rowid as region_id, r.code_region as region_code, st.libelle as stcomm, st.picto as stcomm_picto, te.code as typent_code, i.libelle as label_incoterms, s.remise_client, s.remise_supplier FROM llxrp_societe as s LEFT JOIN llxrp_societe_extrafields as sef ON sef.fk_object=s.rowid LEFT JOIN llxrp_c_effectif as e ON s.fk_effectif = e.id LEFT JOIN llxrp_c_country as c ON s.fk_pays = c.rowid LEFT JOIN llxrp_c_stcomm as st ON s.fk_stcomm = st.id LEFT JOIN llxrp_c_forme_juridique as fj ON s.fk_forme_juridique = fj.code LEFT JOIN llxrp_c_departements as d ON s.fk_departement = d.rowid LEFT JOIN llxrp_c_regions as r ON d.fk_region = r.code_region  LEFT JOIN llxrp_c_typent as te ON s.fk_typent = te.id LEFT JOIN llxrp_c_incoterms as i ON s.fk_incoterms = i.rowid WHERE s.entity IN (1) AND s.rowid = 2
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, emptyonclone, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help, aiprompt, css, cssview, csslist FROM llxrp_extrafields WHERE elementtype = 'societe' ORDER BY pos
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 WebPortalMember::fetch
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT d.rowid, d.ref, d.ref_ext, d.civility as civility_code, d.gender, d.firstname, d.lastname, d.societe as company, d.fk_soc as socid, d.statut, d.public, d.address, d.zip, d.town, d.note_private, d.note_public, d.email, d.url, d.socialnetworks, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass, d.pass_crypted, d.photo, d.fk_adherent_type, d.morphy, d.entity, d.datec as datec, GREATEST(d.tms, aef.tms) as datem, d.datefin as datefin, d.default_lang, d.birth as birthday, d.datevalid as datev, d.country, d.state_id, d.model_pdf, c.rowid as country_id, c.code as country_code, c.label as country, dep.nom as state, dep.code_departement as state_code, t.libelle as type, t.subscription as subscription, u.rowid as user_id, u.login as user_login FROM llxrp_adherent_type as t, llxrp_adherent as d LEFT JOIN llxrp_adherent_extrafields as aef ON aef.fk_object = d.rowid LEFT JOIN llxrp_c_country as c ON d.country = c.rowid LEFT JOIN llxrp_c_departements as dep ON d.state_id = dep.rowid LEFT JOIN llxrp_user as u ON d.rowid = u.fk_member WHERE d.fk_adherent_type = t.rowid AND d.entity IN (1) AND d.fk_soc=2
2026-05-02 14:42:06 INFO    213.91.249.196  1074103   1065 --- End access to /public/webportal/css/themes/custom.css.php
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 DefaultValues::fetchAll
2026-05-02 14:42:06 DEBUG   213.91.249.196  1074103   1065 sql=SELECT rowid, type, user_id, page, param, value FROM llxrp_default_values as t WHERE 1 = 1 AND ((t.user_id IN (0,0)) AND (entity IN (1,1)))
2026-05-02 14:42:06 NOTICE  213.91.249.196  1074103   1065 --- Access to GET /viewimage.php - action=, massaction= NOTOKENRENEWAL=1
2026-05-02 14:42:07 INFO    213.91.249.196  1074103   1065 dol_check_secure_access_document modulepart=medias original_file=image/Logo/MINSHARA LTD Logo - Email Signature.png entity=1
2026-05-02 14:42:07 INFO    213.91.249.196  1074103   1065 viewimage.php return file /storage/minshara/dolibarrdata/medias/image/Logo/MINSHARA LTD Logo - Email Signature.png filename=MINSHARA LTD Logo - Email Signature.png content-type=image/png
2026-05-02 14:42:07 INFO    213.91.249.196  1074103   1065 --- End access to /viewimage.php
2026-05-02 14:43:08 NOTICE  213.91.249.196  1074695   1065 --- Access to GET /public/webportal/index.php - action=, massaction=
2026-05-02 14:43:08 DEBUG   213.91.249.196  1074695   1065 sql=SELECT transkey, transvalue FROM llxrp_overwrite_trans where (lang='bg_BG' OR lang IS NULL) AND entity IN (0, 0,1) ORDER BY lang DESC
2026-05-02 14:43:08 INFO    213.91.249.196  1074695   1065 --- End access to /public/webportal/index.php

Those are the rows from the dolibarr log file when a customer tries to access some of the records under it’s name. They can login without problems, but then when they click on some of the menu links, they get the error.

okay, I am not seeing any issues in the dolibarr.log file, so let’s focus on the webserver logs.

Have you found them? and Which loglevel does your webserver run as?

The server error log is empty, does not have any records of any error…

okay, look for a PHP log then

Tell me about your setup. Which webserver do you run? how do you run your dolibarr? is it in a container? …

Which PHP version are you running?

PHP version is 8.3.30

Dolibarr is running on linux based server - Linux flash.bulinfo.net 5.14.0-611.27.1

DB is MariaDB 10.11.16

I found the problem and fixed it (with the help of AI, cuz i am not that deep in the PHP).

PROBLEM:

Your site was throwing HTTP 500 because of a PHP fatal error:

  • The method showphoto() in FormWebPortal did not match the same method in Dolibarr’s core Form class.

  • PHP 8+ enforces strict method compatibility → mismatch = crash.

Current method: public static function showphoto(…, $noexternsourceoverwrite = 0)

Core methond: public static function showphoto(…, $noexternsourceoverwrite = 0, $usesharelinkifavailable = 0)

THE FIX:

File to be changed: htdocs/webportal/class/html.formwebportal.class.php

Replacement code: public static function showphoto($modulepart, $object, $width = 100, $height = 0, $caneditfield = 0, $cssclass = ‘photowithmargin’, $imagesize = ‘’, $addlinktofullsize = 1, $cache = 0, $forcecapture = ‘’, $noexternsourceoverwrite = 0, $usesharelinkifavailable = 0)

great, next would be to check if it has been fixed on github so you could submit a fix there for 23.0.2

I am not sure this has been fixed in v23 - no, but it looks like it has been fixed in develop

So, here’s a chance to make a pull request with only this change against v23. Follow this link and use the little pencil icon to make the change.

I think i have created something called Pullrequest - Update html.formwebportal.class.php by flgllc · Pull Request #38072 · Dolibarr/dolibarr · GitHub