Skip to main content

Running php and apache on termux


This was my experience getting php and apache to run on termux

apt update && apt upgrade -y

apt install php-apache

I was following an old blog post that used php 7 and got these errors

Can't locate API module structure `php7_module' in file /data/data/com.termux/files/usr/libexec/apache2/libphp.so: undefined symbol: php7_module

Cannot load /data/data/com.termux/files/usr/libexec/apache2/libphp7.so

Corrected in apache config file

vim $PREFIX/etc/apache2/httpd.conf

LoadModule php_module /data/data/com.termux/files/usr/libexec/apache2/libphp.so

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.

Comment out mpm_worker and use mpm_prefork

#LoadModule mpm_worker_module libexec/apache2/mod_mpm_worker.so
LoadModule mpm_prefork_module libexec/apache2/mod_mpm_prefork.so

This still does not work as apache (httpd) was failing silently. According to Chatty LoadModule php_module ...libphp.so often fails in Termux because mod_php is incompatible or unstable with Android builds, so PHP-FPM is used instead since it’s decoupled, stable, and works via FastCGI.

But php-fpm was giving this error at first

Fri May 15 15:04:09 2026 (29777): Error Cannot create lock - Permission denied (13)

vim $PREFIX/etc/php-fpm.conf

[global]
error_log = /data/data/com.termux/files/usr/var/log/php-fpm.log

include=$PREFIX/etc/php-fpm.d/*.conf

mkdir -p $PREFIX/etc/php-fpm.d
vim $PREFIX/etc/php-fpm.d/www.conf

#substitute whoami, should look like u0_aNNN where NNN is a 3 digit number

[www]

user = whoami
group = whoami

listen = 127.0.0.1:9000

pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 2

; Disable OPcache here (IMPORTANT)
php_admin_value[opcache.enable] = 0
php_admin_value[opcache.enable_cli] = 0

And finally the command that works because I also had to force disable opcache from the command line

php-fpm -y $PREFIX/etc/php-fpm.conf -d opcache.enable=0 -d opcache.enable_cli=0

And I can test it out here from bash

php -r '
$h=["127.0.0.1","localhost","::1"];
foreach($h as $x){
  $s=@fsockopen($x,9000);
  echo "$x => ";
  var_dump($s);
}
'

This is how you can configure apache to use php-fpm

LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy
_fcgi.so
#<FilesMatch \.php$>
 # SetHandler application/x-httpd-php                 #</FilesMatch>
<FilesMatch \.php$>                                       SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

This is just a test dev environment so a minimal/starter config was used. A proper config is needed for the real world. Also a rooted phone might not get the opcache error.

Comments

Popular posts from this blog

Giving

It is 237pm and I have decided to write. I drank a strong cup of coffee. It is hot outside but cool inside in the AC. I have no topic but I feel like writing. I love giving charity. Who knows it, feels it. The world would be a much better place if we all shared with one another. If we helped one another. If we only take as much as we need and leave the rest for others. If we prioritised needs over wants. We are going to leave it all behind when we die. We cannot carry anything into the grave except our deeds. One of the easiest ways to give money to charities is through SMS codes. The telecoms should have a system in place where charitable causes can sign up for an SMS code to accept donations. Long ago I remember seeing the donation tins at the supermarket. We should have more of those. I think more people would give more if they were presented with more opportunities to give. The nlcb booths could be outlets for making donations. Linx machines could be points for making donations. AT...

Technology in Trinbago

It is 205am and I have decided to write. I was doing some research and trying to update myself on what is happening in the tech space in Trinidad and Tobago. Nothing stood out in particular. I went looking at what other Caribbean countries were doing that we could adopt. I think there are opportunities in that. Then I decided to focus my energy on coming up with a list of things I think could be done with tech in Trinbago. 1. Feeding a startup culture. Ease of doing business. Make it easy to start and run a business. Support for businesses that earn foreign exchange. 2. Launch the work from home policy. 3. Have a similar policy for online schooling and home schooling. 4. Tech literacy focusing on cybersecurity and keeping safe online. 5. What would it take to get Paypal and CashApp supported here? 6. Support and encouragement for tech bloggers and tech youtubers. 7. More hackatons and a yearly developer survey. 8. Facilitating contact and communication between local techies and big tec...

A simple prayer

It is 200pm and I have started to write again. I abandoned my last blog post. I did not know what to write. I still do not know what to write about but I am still going to write anyway. I was thinking. What if there was a clock where a day was 100 hours and an hour was 100 minutes, what would be the current time in Trinidad according to that clock? 58.82 would be the time according to my friend — 5+8+8+2 = 23. 58.33 would have been the time I started — 5+8+3+3 = 19. If you are familiar with my writing you know that 19 and 23 comes from my book Love Letters. Nice but what to write about? I was thinking about a simple prayer. What would be a simple prayer? What would be the simplest prayer? My friend says that "thank you" is a simple prayer that carries so much weight. What about a prayer that is an acronym of the word simple? That forms a grammatically correct sentence. [insert s word] in my prayer like [insert e word]. Share, save, soul ... ease, every, eternal are some words...