What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
PHP’s Zend Thread Safety (ZTS) cannot be switched on in an already-built Ubuntu binary. Build the PHP version you need from source with --enable-zts, select the POSIX-thread backend, install it in an isolated prefix such as /opt/php-zts, and then rebuild extensions and services against that installation. Existing distribution PHP can remain available while you test the new binary.
What ZTS changes in PHP
A normal PHP build is generally non-thread-safe (NTS). A ZTS build adds the thread-safety layer needed by extensions and runtimes that execute PHP work in multiple threads. The choice is made while PHP itself is compiled; it is not a runtime setting in php.ini and cannot be added by installing an extension later.
Free tools Windows power users keep installed
One-click scans. No signup required.
“Zend Thread Safety cannot be enabled post build; it is a build time configuration option.”
That distinction determines the solution on Ubuntu: installing another package on top of an NTS binary will not convert it. You need a source build, or a distribution package that was specifically built with ZTS for your Ubuntu release. Package availability is release-specific, so verify it rather than assuming that the standard php package has the required build.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.
Current and historical configure switches
| PHP source version | Configure switch | Use |
|---|---|---|
| PHP 8.0 and later | --enable-zts |
Enables Zend Thread Safety. |
| Non-Windows PHP before 8.0 | --enable-maintainer-zts |
Historical spelling used by those source trees. |
Use the switch documented by the exact source tree you selected. Do not combine both names in one build command.
Decide what you are building before installing anything
Choose the PHP branch and source tree
Pick a PHP version that is supported by your application and by every extension you intend to load. A ZTS build does not remove normal PHP-version compatibility requirements. An extension that supports one PHP branch may not support another, even when both are ZTS builds.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Use a released source archive when you want a stable, reproducible build. A development checkout can work, but it may not contain a generated configure script. In that case, PHP’s build process requires ./buildconf before configuration.
Inventory extensions and SAPIs
Write down the extensions, database drivers, SSL and XML support, and server interfaces your application needs. Decide whether you need only the command-line interpreter, or also PHP-FPM, an Apache module, or another SAPI. A ZTS CLI executable does not automatically change an existing FPM pool or Apache module; each SAPI must use a binary built and installed from the intended configuration.
Use a separate installation prefix
Install the custom build under a directory such as /opt/php-zts rather than replacing /usr/bin/php. Isolation lets you compare binaries, preserve the Ubuntu-managed PHP installation, and remove or roll back the experimental build without repairing distribution files. Keep the prefix in your build notes because it determines the locations of php, phpize, php-config, extension modules, and configuration files.
Distribution package versus a source build
Before compiling, check whether a package for your target Ubuntu release already provides ZTS. The answer can differ by Ubuntu release, PHP branch, repository, and SAPI. If no suitable package exists, compiling from source is the dependable way to control the ZTS flag.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstall| Consideration | Ubuntu distribution package | Custom source build |
|---|---|---|
| ZTS availability | Must be verified for the exact release and package; the ordinary package may be NTS. | Explicitly selected with --enable-zts (or the historical pre-8.0 spelling). |
| PHP and extension compatibility | Package maintainers choose the version and extension set. | You choose the PHP source version and must ensure every extension supports it. |
| Isolation and rollback | Integrates with Ubuntu’s package management but can affect the system-wide default. | An explicit prefix keeps the existing installation available for testing and rollback. |
| Maintenance | Updates arrive through Ubuntu’s package channels when provided. | You must rebuild for PHP updates, security fixes, and changed dependencies. |
| SAPI coverage | Depends on the packages available for that release. | You configure and install the CLI, FPM, Apache module, and other SAPIs you need. |
| Reproducibility | Package metadata records the maintainer’s build choices. | You must record the source version, flags, prefix, Ubuntu release, and extension versions. |
Do not infer that a package is ZTS merely because its name contains a PHP version. Confirm the binary’s configuration after installation.
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
Prepare Ubuntu for a PHP source build
Install the build dependencies
Update package metadata, then ask Ubuntu to install the build dependencies declared for PHP:
sudo apt update
sudo apt build-dep php
This command is the documented starting point for an Ubuntu PHP build. It may not provide every optional library required by your chosen configure flags, and package names vary between Ubuntu releases. If configuration later reports a missing header or library, install the corresponding development package (usually the package ending in -dev) and rerun ./configure. Do not copy a dependency list from an old tutorial without checking the error against your release.
If apt build-dep cannot find PHP build metadata, check that your Ubuntu package sources include source-package entries for the release. Keep the dependency installation tied to the Ubuntu version on which you will compile; development headers from another release can create confusing link and ABI problems.
Keep a build record
- Ubuntu release and architecture.
- Exact PHP source version or checkout identifier.
- Every configure option, including the installation prefix.
- Versions of extensions and external libraries.
- The compiler and dependency packages installed for the build.
This record makes a later security rebuild reproducible and shows which binary an extension or service is expected to use.
Download and prepare the PHP source
Extract the released source archive into a working directory, or check out the exact development revision you selected. Change into that directory before running PHP’s build commands.
A released source tree normally includes the generated configure script. A development checkout may require:
./buildconf
PHP documents buildconf as the step that generates the configure script from a development tree. If the script is already present in a release archive, do not regenerate it unnecessarily. Run ./configure --help in the same tree to inspect options available in that particular PHP version; configure flags can change between branches.
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Configure PHP with ZTS enabled
For a current PHP source tree, a minimal representative configuration is:
./configure --prefix=/opt/php-zts --enable-zts --with-tsrm-pthreads
--enable-zts enables Zend Thread Safety. --with-tsrm-pthreads selects POSIX threads, the documented default thread backend for this build path. The prefix keeps the resulting files out of Ubuntu’s system-managed locations.
A real application generally needs additional options for its extensions, database drivers, TLS, XML support, and SAPI. Add only options you have a requirement for and that your source version exposes. For example, a web deployment may need the FPM SAPI, while a command-line worker may need only the CLI SAPI. The exact flags and library names vary with the PHP branch and Ubuntu libraries, so inspect the output of ./configure --help and treat each configure error as a dependency or option problem to resolve.
Read the end of the configure output carefully. Confirm that the intended prefix, ZTS setting, thread backend, and requested SAPIs are reflected there before starting a long compilation. If a required feature is listed as disabled because a header or library was not found, install its development package and rerun configure rather than proceeding with a partial build.
Compile, test, and install into the isolated prefix
PHP’s documented build lifecycle is configure, compile, test, and install:
make -j"$(nproc)"
make test
sudo make install
The parallel make command uses the available processor count to shorten compilation. If memory is limited, reduce the job count. make test runs PHP’s test suite as a build check; its results can depend on the machine, enabled features, and environment. Treat failures as something to investigate before deployment, not as evidence that ZTS was enabled or disabled. No test result should be assumed until you run it on your own build.
make install writes files below the prefix supplied to ./configure. Installing as root is normally required for /opt/php-zts. Keep the source directory and build logs until the executable and all required extensions have been verified.
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
Verify the binary before changing PATH or services
Always inspect the binary under its absolute prefix first. This avoids accidentally querying an older Ubuntu PHP executable that happens to appear earlier in your shell’s PATH.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →/opt/php-zts/bin/php -v
/opt/php-zts/bin/php -i | grep -i 'Thread Safety'
/opt/php-zts/bin/php-config --configure-options | grep -F -- --enable-zts
/opt/php-zts/bin/phpize --version
command -v php phpize php-config
The information output should report thread safety as enabled. The configure-options output should include --enable-zts for current PHP. The final command shows which unqualified commands your shell resolves; those paths may still point to Ubuntu’s PHP and are not proof that the custom build is active.
Check that php, php-config, and phpize all come from the same prefix before compiling an extension. PHP’s extension documentation requires matching development headers and tools: using an NTS phpize with a ZTS runtime, or the reverse, can produce a module that cannot be loaded reliably.
For a temporary shell test, call the absolute path explicitly or put the custom directory first in a controlled shell environment. Do not make a system-wide PATH change until the application and extensions have passed their checks.
Build pthreads, parallel, and other extensions correctly
Extensions such as pthreads and parallel require a PHP binary built with ZTS and working POSIX-thread development support. They cannot retrofit thread safety into an NTS PHP executable. Installing such an extension into the distribution PHP will therefore fail its requirements or leave you with a module that cannot load.
Use extension releases that explicitly support the PHP version you compiled. Build each module against the tools in the same prefix:
/opt/php-zts/bin/phpize
./configure --with-php-config=/opt/php-zts/bin/php-config
make -j"$(nproc)"
sudo make install
The first command must be run from the extension’s source directory. Some extensions use additional configure switches; follow that extension’s instructions while retaining the matching --with-php-config path. Confirm the resulting module’s installation directory and load it only in the ZTS PHP configuration. Rebuild or reinstall components that were previously compiled for an NTS binary, including extensions and SAPI modules.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
Keep CLI, FPM, Apache, and extensions aligned
PHP installations often contain several independently selected components. A verified ZTS CLI does not convert an existing FPM daemon or Apache module. A web request may continue to execute the old NTS binary even though php -v in your terminal reports ZTS.
- Identify the executable used by each service unit or web-server module.
- Install the required SAPI from the same source build and prefix, or deliberately keep the service on the existing PHP while testing the CLI.
- Point extension directories and configuration files at the matching installation.
- Use the matching
php-configandphpizewhenever a module is rebuilt. - Restart a service only after its binary, modules, and configuration have been checked together.
Do not assume that changing a shell alias, PATH entry, or symlink changes a systemd service. Service definitions and web-server module configuration commonly contain absolute paths.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteSwitch over safely and preserve a rollback path
Test without replacing Ubuntu’s PHP
Run the application’s CLI commands with /opt/php-zts/bin/php explicitly. For web applications, create a test pool or isolated virtual host that uses the new SAPI while production continues using the known-good binary. Exercise the extensions that motivated the ZTS build, not just php -v.
Change defaults only after validation
If the tests succeed, update the specific PATH, service unit, FPM pool, or Apache module that should use ZTS. Make one controlled change at a time and record the previous path. Avoid overwriting /usr/bin/php; a package upgrade or a rollback can otherwise become difficult to reason about.
Roll back
Because the custom files live under their own prefix, rollback normally means restoring the previous service or PATH configuration and stopping use of that prefix. Keep the source, configure command, and extension list until the new installation has survived a normal update cycle.
Troubleshoot common build and loading failures
| Symptom | Likely cause | Correction |
|---|---|---|
configure does not recognize --enable-zts. |
The source tree may be an older pre-8.0 non-Windows branch, or the command is being run outside the intended PHP tree. | Check the source version and its ./configure --help output. For the historical pre-8.0 spelling, use --enable-maintainer-zts. |
| A header or library is reported missing. | The corresponding Ubuntu development package is not installed, or the configure option requests an unnecessary feature. | Install the matching -dev package for that release, then rerun configure. Remove optional flags you do not need. |
| Compilation succeeds but an extension will not load. | The extension was built with a different PHP version, SAPI, or NTS/ZTS toolchain. | Rebuild it with the custom prefix’s phpize and php-config, and use an extension release that supports the compiled PHP version. |
php -v shows NTS after installation. |
Your shell is invoking Ubuntu’s PHP from another PATH location. | Run the absolute path under /opt/php-zts, inspect command -v php, and adjust PATH only after verification. |
| CLI reports ZTS but the web application does not. | FPM or Apache is still attached to the old binary or module. | Inspect the service and web-server paths, install the matching SAPI, then restart the intended service after testing. |
| Parallel or pthreads cannot be compiled. | The PHP binary is NTS, or POSIX-thread headers/support are unavailable. | Rebuild PHP with ZTS and --with-tsrm-pthreads, install the required development support, and rebuild the extension against that installation. |
Maintain the build over time
A source-built ZTS installation is an ongoing build responsibility. When PHP receives a security update, rebuild the selected source branch with the recorded options and retest every ZTS-dependent extension. Recheck dependency packages when the Ubuntu release changes; available PHP branches and development package names vary by release.
Keep the prefix, source version, compiler options, enabled SAPIs, extension versions, and test outcome in a version-controlled build note. This prevents a later rebuild from silently dropping XML, TLS, database, or SAPI support. It also lets you compare two prefixes during an upgrade and remove the old one only after the new binary is serving the intended workloads.
Quick Recap
Final decision checklist
- Have you selected a PHP source version supported by the application and its extensions?
- Does the source tree use
--enable-zts, or the pre-8.0 historical switch where appropriate? - Did you configure a separate prefix and select the POSIX-thread backend?
- Did Ubuntu provide all required development headers and libraries?
- Did you run the configure, make, test, and install lifecycle and review its output?
- Do the absolute-path checks show ZTS, and do
php,phpize, andphp-configcome from one prefix? - Were pthreads, parallel, and every other extension rebuilt for this exact PHP build?
- Are CLI, FPM, Apache, and extension paths aligned before production use?
- Can you restore the previous service and PATH settings without touching Ubuntu’s system binary?
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

