Website Without PHP
English (United Kingdom)GB
  • English (United States)
  • English (United Kingdom)
  • Dutch (Netherlands)
  • Dutch (Belgium)
Menu

ctype_digit(): non-string argument is deprecated

Get help with your website

Which PHP version does your site report?

We read only what your site already sends in public: the headers and the top of the homepage. No scan, no login.

Error

What the message means

A deprecationA deprecation is an early warning that a feature still works today but will be removed in a future PHP version, so code using it must be changed in time. from ctype_digit() can mean that its input is not a string. Passing non-string values to ctype functions has been deprecated since PHPPHP is a programming language that builds your web pages on the computer that hosts your site, just before they reach the visitor. WordPress runs on it. 8.1. These functions examine characters.

Historically, an integer could be treated as an ASCII code. Establish whether the application intends a textual value or a character before changing it.

Before changing anything

Keep the complete error line and its timestamp in a private note. Record the action that failed, the active PHP versionA PHP version is a numbered edition of PHP, like 8.3. Each edition is looked after for a limited time, then gets security fixes only, then nothing. and the components updated at the same time. Share only information needed for the investigation.

Public support forums are not an appropriate place for customer details, credentials or complete server paths.

Back up files and the database before making changes. Check that the backupA backup is a separate copy of your website's files and database, so you can bring the site back after a mistake, a hack or a failed update. is usable. Work on a private test copy with the same PHP version and relevant settings.

Disable real payments and outgoing customer email there. Agree who will make the change and who will check the outcome. The steps below are investigation advice rather than a diagnosis of your particular website.

Possible cause

Trace the value from its form, setting or import to the check. A stored number can have a different type from form text. Casting to string fits only when its textual representation is intended.

Code that deliberately expects a character identified by a codepoint requires a different assessment.

Fix it in five steps

  1. Record the ctype function and input source. Establish the actual type without placing personal form data in a public log.
  2. Describe what validation should allow. Distinguish a code containing only digits from a quantity that will be used in calculations.
  3. Make the input explicit according to that purpose. Do not automatically apply the same conversion to every ctype call in a package.
  4. Test valid digit text, empty input and text containing a letter. Include a previously saved value that is read back as an integer.
  5. Check what the form accepts and what feedback the visitor receives. Compare saved results and fresh logs with the agreed validation rules.

A concrete acceptance test

An internal customer identifier is a useful example if its agreed format contains only digits. Test one identifier with a leading zero and another without one. Check that searching and reopening lead to the same test record.

Establish whether the zero is part of the identity before testing. This example does not prescribe a universal numbering rule. Ask for help if nobody can explain why an identifier is stored as a number while the form expects text.

Keep validation and record matching in the same acceptance test.

Identify who maintains the code

For a pluginA WordPress plugin is an add-on you install in WordPress to give your site extra features, such as contact forms, SEO tools or a webshop. or themeA WordPress theme is a ready-made package that decides how your WordPress site looks and how its pages are laid out. Change the theme and the design changes., first ask which release fits the intended PHP environment. Give its maintainer the error line and the action that reproduces it. Request a focused change with an explanation of the expected result.

The same explanation belongs in a handover to the developer of custom code.

Avoid changing unrelated components during the same investigation. Keep the original message separate from any new messages after an adjustment. Record the code version and test inputs for each attempt.

This lets you associate a result with a specific change. A test where nobody knows which files changed cannot provide useful acceptance evidence.

Agree in advance what would make the test fail. Examples include incorrect content, lost settings or a visitor action that can no longer be completed. Making a warning disappear is only part of the check.

Ask the website owner to assess the result that a visitor actually needs, alongside the technical review of the change.

When to get help

Use the existing PHP update service or the help form below if you cannot access the code or do not maintain the affected library. Describe the failed action and intended outcome. Do not send passwords.

Ask which correction is proposed and which test will establish that it works.

Use the Exposure Check through the Check your PHP version link as an initial version check. A public check cannot always determine the PHP version and does not prove the cause or repair of this error. If the result is unknown, ask the host to confirm the active version for this website.

After repair, keep versions, test results and fresh log entries with your maintenance notes. Let the responsible administrator decide when the tested change can reach the live website.

Keep accepted and rejected examples side by side. Request a clear reason for each rejection. A form accepting everything after the change is not repaired merely because the deprecation disappears.

The original agreement about valid input remains part of acceptance.

Frequently asked questions

Is a vanished error message enough?

No. Check the expected result of the failed action too. Keep the test time and code version so the check can be repeated.

Can the mini-check prove this cause?

No. A public check does not replace investigation of private logs and server settings. Use the error message and failing action as the starting point.

When is the repair complete?

When the original action produces the correct result and fresh logs show no recurrence. Keep the versions and test result in your maintenance notes.

Sources

Accessed on 26 October 2026.

  1. Domain
  2. Check
  3. Result
  4. Report

Which PHP version does your site run?

Enter your domain. We read only what your site already sends in public: the headers and the top of the homepage. No scan, no login.

We keep the domain and the result, never your IP address.