Building from source is not easy if something is a bit different, and I had a hard time with some directory and configuration options. I was floundering around the web until I found this site that translated from Chinese. No one else had the solution. I couldn't get php fpm to start until I changed the directory (Item 2.ERROR: Unable to globalize). I had other issues listed but I was able to solve them. Please don't delete this, it is very useful info.
The original site (it is in Chinese, not my site, but I want to give credit):
(there is some more there, you can goto the site)
blog.dream1987.top/?paged=2
Installation problems:
1. configure: error:. Xml2-config not found Please check your libxml2 installation.
solution:
apt-get install libxml2-dev
2.Warning: Declaration of PEAR_Installer :: download () should be compatible with & PEAR_Downloader :: download ($ params) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib.phar/PEAR /Installer.php on line 43
Warning: Declaration of PEAR_PackageFile_Parser_v2 :: parse () should be compatible with PEAR_XMLParser :: parse ($ data) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib.phar/PEAR/PackageFile/ Parser / v2.php on line 113
[PEAR] Archive_Tar - already installed: 1.3.13
[PEAR] Console_Getopt - already installed: 1.3.1
[PEAR] Structures_Graph- already installed: 1.0.4
Warning: Declaration of PEAR_Task_Replace :: init () should be compatible with PEAR_Task_Common :: init ($ xml, $ fileAttributes, $ lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. phar / PEAR / Task / Replace.php on line 31
[PEAR] XML_Util - already installed: 1.2.3
Warning: Declaration of PEAR_Task_Windowseol :: init () should be compatible with PEAR_Task_Common :: init ($ xml, $ fileAttributes, $ lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. phar / PEAR / Task / Windowseol.php on line 76
Warning: Declaration of PEAR_Task_Unixeol :: init () should be compatible with PEAR_Task_Common :: init ($ xml, $ fileAttributes, $ lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. phar / PEAR / Task / Unixeol.php on line 76
[PEAR] PEAR - already installed: 1.9.5
solution:
Workaround not found (http://pear.php.net/bugs/bug.php?id=20554)
3. Start php-fpm
1.ERROR: failed to open configuration file '/usr/local/etc/php-fpm.conf': No such file or directory (2)
ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
ERROR: FPM initialization failed
solution:
Php-fpm.conf copy files from the source file to that location.
cp /root/php-7.0.0alpha1/sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf
2.ERROR: Unable to globalize '/usr/local/NONE/etc/php-fpm.d/*.conf' (ret = 2) from /usr/local/etc/php-fpm.conf at line 125.
ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
ERROR: FPM initialization failed
solution:
Edit /usr/local/etc/php-fpm.conf document introduced * .conf part, change to the correct path include = / usr / local / etc / php-fpm.d / *. Conf
If there is no /usr/local/etc/php-fpm.d directory, create the directory.
3.WARNING: Nothing matches the include pattern '/usr/local/etc/php-fpm.d/*.conf' from /usr/local/etc/php-fpm.conf at line 125.
ERROR:. No pool defined at least one pool section must be specified in config file
ERROR: failed to post process the configuration
ERROR: FPM initialization failed
solution:
cp www.conf.default www.conf
4.ERROR: [pool www] can not get gid for group 'nobody'
ERROR: FPM initialization failed
solution:
Www.conf open files, user and group users into nginx default settings, usually the default is www-data.Nginx 1.4.x на Unix системи
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Nginx 1.4.x на Unix системи
Референца за `install.unix.nginx.php` со подобрена типографија и навигација.
Nginx 1.4.x на Unix системи
Оваа документација ќе покрие инсталација и конфигурирање на PHP со PHP-FPM за Nginx 1.4.x HTTP сервер.
Оваа документација ќе покрие инсталација и конфигурирање на PHP со PHP-FPM за Nginx 1.4.x HTTP сервер.
/usr/local/nginxОвој водич ќе претпостави дека сте го изградиле Nginx од извор и затоа сите бинарни датотеки и конфигурациски датотеки се наоѓаат на
. Ако ова не е случај и сте го добиле Nginx преку други средства, тогаш ве молиме погледнете го » Nginx Wiki
со цел да го преведете овој прирачник на вашата поставка.
Овој водич ќе ги покрие основите на конфигурирање на Nginx сервер за обработка на PHP апликации и нивно сервисирање на порта 80, се препорачува да ја проучите документацијата на Nginx и PHP-FPM ако сакате да ја оптимизирате вашата поставка надвор од опсегот на оваа документација.
-
Ве молиме имајте предвид дека низ оваа документација, броевите на верзиите се заменети со 'x' за да се осигура дека оваа документација останува точна во иднина, ве молиме заменете ги овие по потреба со соодветните броеви на верзии. Се препорачува да ја посетите » install
-
страницата со цел да го добиете и инсталирате Nginx на вашиот систем.
tar zxf php-x.x.x
-
Земете и распакувајте го изворниот код на PHP:
cd ../php-x.x.x ./configure --enable-fpm --with-mysqli make sudo make install
-
Конфигурирајте и изградете го PHP. Овде го прилагодувате PHP со различни опции, како што се кои екстензии ќе бидат овозможени. Стартувајте ./configure --help за список на достапни опции. Во нашиот пример ќе направиме едноставна конфигурација со PHP-FPM и MySQLi поддршка.
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf cp sapi/fpm/php-fpm /usr/local/bin
-
Земете ги и преместете ги конфигурациските датотеки на нивните точни локации
Важно е да го спречиме Nginx да предава барања до PHP-FPM бекендот ако датотеката не постои, што ни овозможува да спречиме произволно инјектирање скрипти. cgi.fix_pathinfo Можеме да го поправиме ова со поставување на
0директивата наво нашата php.ini датотека.
vim /usr/local/php/php.ini
Вчитајте го php.ini:
cgi.fix_pathinfo=Пронајдетеcgi.fix_pathinfo=0
-
php-fpm.conf мора да се измени за да се специфицира дека php-fpm мора да работи како корисник www-data и групата www-data пред да можеме да ја стартуваме услугата:
vim /usr/local/etc/php-fpm.d/www.conf
Најдете и изменете го следново:
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data
php-fpm услугата сега може да се стартува:
/usr/local/bin/php-fpm
Овој водич нема да конфигурира php-fpm понатаму, ако сте заинтересирани за понатамошно конфигурирање на php-fpm, ве молиме консултирајте ја документацијата.
-
Nginx сега мора да биде конфигуриран за поддршка на обработката на PHP апликации:
vim /usr/local/nginx/conf/nginx.conf
Изменете го стандардниот блок за локација за да биде свесен дека мора да се обиде да сервисира .php датотеки:
location / { root html; index index.php index.html index.htm; }Следниот чекор е да се осигурате дека .php датотеките се предаваат на PHP-FPM бекендот. Под коментираниот стандарден PHP блок за локација, внесете го следново:
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }Рестартирајте го Nginx.
sudo /usr/local/nginx/sbin/nginx -s stop sudo /usr/local/nginx/sbin/nginx
-
Креирајте тест датотека
rm /usr/local/nginx/html/index.html echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
Now navigate to http://localhost. The phpinfo() should now be shown.
Следејќи ги горенаведените чекори, ќе имате активен Nginx веб сервер со поддршка за PHP како FPM SAPI модул. Се разбира, постојат многу повеќе опции за конфигурација достапни за Nginx и PHP. За повеќе информации напишете скриптата. Список на достапни опции заедно со кратки објаснувања може да се прикаже со извршување на во соодветното дрво на изворниот код.
Белешки од корисници 8 белешки
To maximize the server performance with highest speed, with fewest resources, i have decided to compile PHP 8 manually from minimal Linux/Unix-based OS (my Linux distro is rpm-based packages)
My system has successfully powered up by PHP 8.0.9 - with Opcache/JIT enabled & other several PHP extension module. Here is several experience that may save you several hours of research.
1. Before step (3) - Configure and build PHP - to ensure that no errors occurs, you can refer to my prerequisites library.
sudo dnf install \
gcc gcc-c++ make cmake autoconfig \
zlib zlib-devel pcre pcre-devel \
libxml2-devel libxslt-devel \
bzip2-devel curl-devel libzip-devel\
sqlite-devel \
systemd-devel \
openssl-devel \
libffi-devel \
libpng libpng-devel libwebp libwebp-devel libjpeg libjpeg-devel libXpm libXpm-devel \
freetype-devel \
gmp-devel \
libldb-devel \
libc-client libc-client-devel \
openldap openldap-devel \
oniguruma oniguruma-devel \
net-snmp-devel readline-devel unixODBC-devel \
uw-imap uw-imap-devel uw-imap-static uw-imap-utils \
libicu-devel \
enchant2 enchant2-devel \
gd gd-devel \
libsodium libsodium-devel \
libtidy libtidy-devel
You may not receive error when issuing ./configure, make && make install. Even when you manually build your PHP extension package later.
2. At step 5 - before modifying php.ini - you may double-check whether the current PHP is reading which php.ini file by this command
php -ini | grep php.ini
# My result. It is different from tutorial.
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.iniWhen I run the following command to start the php-fpm:
/usr/local/bin/php-fpm
I got the following error information:
Unable to globalize '/usr/local/NONE/etc/php-fpm.d/*.conf' (ret=2) from /usr/local/etc/php-fpm.conf at line 143.
To fix this error, do:
change the string "include=NONE/etc/php-fpm.d/*.conf" to "include=etc/php-fpm.d/*.conf" in the file "/usr/local/etc/php-fpm.conf" with text editor.
After that, I try to start the php-fpm again and got error information again:
Nothing matches the include pattern '/usr/local/etc/php-fpm.d/*.conf' from /usr/local/etc/php-fpm.conf at line 143.
To fix this error, do:
cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.confcp php/php.ini-development php/lib/php.ini
cp php/etc/php-fpm.conf.default php/etc/php-fpm.conf
cp php/etc/php-fpm.d/www.conf.default php/etc/php-fpm.d/www.confIf you get "File not found" error then add "root ROOT_DIR_LOCATION" directive to PHP location block i.e. "location ~* \.php$ { }" , where ROOT_DIR_LOCATION is root directory like "/usr/share/nginx/html" .at step 3, after command "sudo make install"
if there is problem with pear.php.net (https). Need to change this line (from https to http) in Makefile
PEAR_INSTALLER_URL = http://pear.php.net/install-pear-nozlib.pharGreat effort for this tutorial, thanks a ton, here are my notes if may help anyone, considering default install on WSL2 container
Note: composer added for Laravel framework.
These are NOT to be copy and pasted as it is, need to be selective as there are annotations beside some commands,
Also I've commented # some of the defaults written by the original editor due to mismatch to my current environment.
sha256sum php-x.x.x.tar.gz => e847745fd66fc8c57fac993a609fefcded93fddccd225f0620a26bb5ae5753c3
tar zxf php-x.x.x
sudo apt install build-essential
sudo apt install -y composer nginx pkgconf libxml2-dev libsqlite3-dev zlib1g-dev
cd php-x.x.x
./configure --enable-fpm --with-mysqli <==Thank you for installing PHP.
make <== takes a while
sudo make test <== optional as recommended
sudo make install <= /usr/local/bin /usr/local/php
sudo cp php.ini-development /usr/local/lib/php.ini
sudo cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
sudo cp sapi/fpm/php-fpm /usr/local/bin
sudo vim /usr/local/php/php.ini <= cgi.fix_pathinfo=0
sudo vim /usr/local/etc/php-fpm.d/www.conf <= user=www-data group=www-data
sudo vim sapi/fpm/php-fpm.conf <= edit include=etc/php-fpm.d/*.conf <- relative path
sudo cp sapi/fpm/php-fpm.conf /usr/local/etc
/usr/local/bin/php -v <= $PATH$ uses /usr/local/bin at first /usr/local/lib/php.ini
sudo /usr/local/bin/php-fpm <= start the service
sudo vim /etc/nginx/sites-available/default <= edit the following under server {}
location / {
#root html;
#index index.php index.html index.htm;
}
location ~* \.php$ {
#fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
*Restart nginx (root /var/www/html) if root path doesn't exist, default is: /usr/share/nginx/html
sudo nginx -t <= Test Nginx conf files
sudo service nginx reload
sudo service nginx stop
sudo service nginx start <= [OK]
php-fpm needs to be in a service, or kill process manually ps -aux | grep php-fpm ; kill <pid>in linux system, if you want to add php-fpm service to system service; it is easy to do that, because php offer the relate shell script:
after make and make install;enter the source code package sapi/fpm/init.d.php-fpm ; type the code in the linux system.
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
then you can use "php-fpm {start|stop|force-quit|restart|reload|status|configtest} " command to control your php-fpm program more convenient .