Issues relating to compiling apache, php etc..Which version of CustomBuild will am I running?
cd /usr/local/directadmin/custombuild
./build version
eg:
[root@server custombuild]# ./build version
2.0.0-RC7 (rev: 798)
The value is also specifying in the options.conf, however you cannot just change custombuild=1.2 to be custombuild=2.0 because version 2.0 has many different settings which are not the same.
See the forum thread, if you want to upgrade to 2.0.
Older scripts might not have “./build version” functionality, so use this instead:
cd /usr/local/directadmin/custombuild
grep BUILDSCRIPT_VER build
OpenLiteSpeed is the Open Source edition of LiteSpeed Web Server Enterprise. OpenLiteSpeed containing all of the essential features that found in LiteSpeed Enterprise, including LSCache (plugin needed for WordPress).
To install OpenLiteSpeed (DA 1.57 or higher is needed, it will run fine with pre-release binaries too):
1) You must have CustomBuild 2.0. If you do not, upgrade to CustomBuild 2.0
If there you unsure of which version of CustomBuild you’re using,
2) You can either run this in step 2 of the CB2 install guide, or do it after. Run the following to set the options.conf to use OpenLiteSpeed and lsphp:
If you have more than 1 php version, set php2_mode lsphp for all other php#_modes.
]]>For preventing this, either:
1) Remove FollowSymLinks from your .htaccess file. Then It can be replace with SymLinksIfOwnerMatch.
2) Or use the patch method instead, which allows FollowSymLinks, but replaces it withSymLinksIfOwnerMatch internally, so the clients do not need to adjust anything (we will likely use this as the default in the future).
For Zend, type:
cd /usr/local/directadmin/custombuild
./build set zend yes
./build zend
after you change the php versions, it is recommended you install zend again.
Note that Zend Guard is the new name for Zend Optimizer, and it is used for newer versions of php. Custombuild will install the correct one for your system.
For Ioncube, type:
cd /usr/local/directadmin/custombuild
./build set ioncube yes
./build ioncube
The “./build set” command only sets the option in the options.conf, so you can only need it to do that once to enable the feature, then install the item after it is enabled.
At First, FrontPage server extensions are end-of-life and should not be using on a production server.
We will not be able to offer any technical support for FrontPage.
If you are using frontpage, but are using apache 1.3 compiling with custombuild (instead of customapache), if you see this error:
The requested URL /_vti_bin/_vti_adm/fpadmcgi.exe was not found on this server.
a reported (untested) solution is to use these options in your main httpd.conf:
<IfModule mod_frontpage.c>
FrontPageEnable
FrontPageAdminEnable
</IfModule>
This will only applies to CloudLinux systems.
We have had a few reports of this error when compiling apache/suexec:
/usr/bin/ld: cannot find -llve
collect2: ld returned 1 exit status
where the solution is for install the required liblve development package:
yum -y install liblve-devel
You may see this value in your User’s httpd.conf file:
php_admin_value sendmail_path ‘/usr/sbin/sendmail -t -i -f user@domain.com’
where user is the account owner for domain.com.
If you would like to change this value, go to:
Admin Level -> Custom Httpd Configuration -> domain.com
In the top text area, paste this code
|?PHP_EMAIL=new@email.com|
to whichever email value you would like, and this will be using in the VirtualHost configs for that domain.
For php-fpm (nginx, and some apache setups), the Custom Httpd Config pages are not currently fill the require CUSTOM1 tokens for the User’s php-fpm.conf file, thus the EMAIL token can not currently be easily overridden.
If you need to change the EMAIL token for a php-fpm.conf file, create a custom copy of the php-fpm.conf template, and change the EMAIL token to have if-then-else statements, so it will only affects one domain, eg:
|*if DOMAIN=”domain.com“|
|?EMAIL=new@email.com|
|*else|
|?EMAIL=`USER`@`DOMAIN`|
|*endif|
On FreeBSD systems, gmake is requiring for a few of the modules (Freetype, in this example).
If it is missing, the custombuild script will attempt to install it with ports, and failing that, with pkg_add, eg:
If /usr/local/bin/gmake is missing, it will run:
cd /usr/ports/devel/gmake
if, after those commands, /usr/local/bin/gmake still does not exist, it will then run this as a last resort:
pkg_add -r gmake
There been a few reports of the following this error:
Configuring freetype-2.4.4…
GNU make (>= 3.80) or makepp (>= 1.19) is required to build FreeType2.
Please try
`GNUMAKE=<GNU make command name> ./configure’.
or >&2
`GNUMAKE=”makepp –norc-substitution” ./configure’.
Done. Making freetype-2.4.4…
Trying to make FreeType…
/libexec/ld-elf.so.1: Shared object “libintl.so.9” not found, required by “gmake”
with the relevant error message in bold.
What the error means is that a requiring library is missing.
On some versions of freebsd, the libintl.so.9 might be missing, but the libintl.so.8 is there.
If that is the case, you can try using the command:
ln -s libintl.so.8 /usr/local/lib/libintl.so.9
to see if that repairs the “gmake” command. (test running it to see if error goes away).
still It will be better to get a problem gmake binary for your OS, or get the newer libintl.so.9 library, but in many cases this is an quick and easy workaround.
If the command
./build curl
generates the error:
libtool: compile:
gcc -DHAVE_CONFIG_H -I../include/curl -I../include -I../include -I../lib
-I../lib -I/usr/kerberos/include -g0 -O2 -Wno-system-headers -MT
url.lo -MD -MP -MF .deps/url.Tpo -c url.c -fPIC -DPIC -o .libs/url.o
url.c:83:18: error: idna.h: No such file or directory
url.c:84:17: error: tld.h: No such file or directory
url.c:85:24: error: stringprep.h: No such file or directory
url.c:87:22: error: idn-free.h: No such file or directory
url.c: In function ‘tld_check_name’:
url.c:3400: error: ‘IDNA_SUCCESS’ undeclared (first use in this
function)
url.c:3400: error: (Each undeclared identifier is reported only once
url.c:3400: error: for each function it appears in.)
url.c:3406: error: ‘TLD_SUCCESS’ undeclared (first use in this
function)
url.c:3407: error: ‘Tld_rc’ undeclared (first use in this function)
url.c:3407: error: expected ‘)’ before ‘rc’
url.c:3407: warning: assignment makes pointer from integer without a
cast
url.c:3409: error: ‘TLD_INVALID’ undeclared (first use in this
function)
url.c: In function ‘fix_hostname’:
url.c:3452: error: ‘IDNA_SUCCESS’ undeclared (first use in this
function)
*** Error code 1
the solution is to edit the “build” script, and find the function for doCURL() which should have a make command as follows:
make CPPFLAGS=-I/usr/kerberos/include
change it to just be:
make
other reported solution:
If there you need to make customized changes to your /etc/httpd/conf/httpd.conf, when custombuild updates apache, your configurations will be change to the new versions of the configs.
Since you are re looking for customized versions, you don’t want your changes to be lost.
There are 3 ways of making your customization stick:
1) the “official” way would be to use the custombuild custom directory method:
cd /usr/local/directadmin/custombuild
mkdir -p custom/ap2
cp -Rp configure/ap2/conf custom/ap2
and then edit your configs in:
custom/ap2/conf
as needed. The custom path overrides the default, and will not be overwritten. Your customized files will be using for the overwrite, so you just need to remember to make your changes in the custom path.
./build rewrite_confs
from the custombuild directory.
2) If there you only need to add extra Apache config code to the system, but do not need to remove any existing code, the best way is to add your changes to:
/etc/httpd/conf/extra/httpd-includes.conf
as this file will not be touched by CustomBuild or DirectAdmin.
If it does not exist, DA will ‘touch’ it so that it exists, but any changes you add there will be safe from any external changes.
3) The easiest way would be to run:
chattr +i /etc/httpd/conf/httpd.conf
Then custombuild will not touch it.
You can repeat this command on any other files you need, eg /etc/httpd/conf/extra/httpd-alias.conf, etc..
You would then use:
chattr -i /etc/httpd/conf/httpd.conf
to allow changes again when you needed. Do not forget to lock it again after you are done.
If you have got custom options enabled for any of PhpMyAdmin, SquirrelMail or Roundcube, then you will need a way to maintain those customizations between updates by custombuild.
For doing that, you would simply copy your custom config to the relevant path.
The 3 paths are as follows:
#phpMyAdmin
/usr/local/directadmin/custombuild/custom/phpmyadmin/config.inc.php
/usr/local/directadmin/custombuild/custom/phpmyadmin/.htaccess
/usr/local/directadmin/custombuild/custom/phpmyadmin/themes
#SquirrelMail
/usr/local/directadmin/custombuild/custom/squirrelmail/config.php
#Roundcube >= 1.0.0
/usr/local/directadmin/custombuild/custom/roundcube/config.inc.php
#Roundcube <= 0.9.5
/usr/local/directadmin/custombuild/custom/roundcube/main.inc.php
/usr/local/directadmin/custombuild/custom/roundcube/db.inc.php
#RoundCube && CustomBuild 2.0
/usr/local/directadmin/custombuild/custom/roundcube/.htaccess
If the relevant config exists, then the custombuild script will copy it to the relevant path of the newly installed script, somewhere in /var/www/html/*.
/usr/local/directadmin/custombuild/custom/roundcube/plugins
if there it exists, will have it is contents copied into:
/var/www/html/roundcube/plugins/
overwriting any duplicates. This can be used to copy specific files/configs/directories for customized plugins over to the new version.
Similarly, if this exists:
/usr/local/directadmin/custombuild/custom/roundcube/skins
it contents will be copied into:
/var/www/html/roundcube/skins/
overwriting any duplicates.
]]>
If there you get the following error during a libxml compile with a 64-bit system:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/libm.a(s_floor.o): relocation R_X86_64_32 against `a local symbol’ can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/libm.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
Though It means the configuration needs to be changed.
Usually,
for an -fPIC error like this, the best way is to recompile the source library to resolve the issue, then recompile libxml the same way it is.
However,
in this case, the cause is libml.a, which is part of the OS distribution, so it is better to avoid that, and make everything with the inverse instead.
In this case, the solution is to tune libxml to not use fPIC or shared libraries.
Edit the build script.
In the doLibxml2 section, find the line:
./configure –prefix=/usr/local –without-python
and change it to:
./configure –prefix=/usr/local –without-python –disable-shared –without-pic
Save/exit.
Then type:
./build libxml
and that should compile libxml for you.
Whether That after further work on this issue, I was able to prevent the error, without need the above items. The fix basically includes a full reinstall of all of the dev, gcc, build-essentials type items using dpkg and the apt-get program.
I am not sure if it was related, but I also did a
which did not get rid of the above error, but in case it was partly related to solve the issue on Debian 5, 64-bit. Related dpkg and apt-get commands using (after much trial and error):
aptitude remove libc6-dev libsasl2-dev libstdc++6-4.1-dev zlib1g-dev g++-4.1 build-essential libssl-dev libcurl4-openssl-dev comerr-dev gcc libkrb5-dev libc-dev libstdc++6-4.3-dev g++-4.3
and apt-get install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev build-essential
If there you get the following errors when trying to compile webalizer:
hashtab.c:163: error: ‘hval’ undeclared (first use in this function)
hashtab.c:163: warning: implicit declaration of function ‘hash’
hashtab.c: In function ‘put_unode’:
hashtab.c:362: error: ‘uint32_t’ undeclared (first use in this function)
hashtab.c:362: error: expected ‘;’ before ‘hval’
hashtab.c:366: error: ‘hval’ undeclared (first use in this function)
hashtab.c: In function ‘put_rnode’:
hashtab.c:491: error: ‘uint32_t’ undeclared (first use in this function)
hashtab.c:491: error: expected ‘;’ before ‘hval’
hashtab.c:495: error: ‘hval’ undeclared (first use in this function)
hashtab.c: In function ‘put_anode’:
hashtab.c:617: error: ‘uint32_t’ undeclared (first use in this function)
hashtab.c:617: error: expected ‘;’ before ‘hval’
hashtab.c:621: error: ‘hval’ undeclared (first use in this function)
hashtab.c: In function ‘put_snode’:
hashtab.c:734: error: ‘uint32_t’ undeclared (first use in this function)
hashtab.c:734: error: expected ‘;’ before ‘hval’
hashtab.c:738: error: ‘hval’ undeclared (first use in this function)
hashtab.c: In function ‘put_inode’:
hashtab.c:850: error: ‘uint32_t’ undeclared (first use in this function)
hashtab.c:850: error: expected ‘;’ before ‘hval’
hashtab.c:854: error: ‘hval’ undeclared (first use in this function)
hashtab.c: At top level:
hashtab.c:1231: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘hash’
make: *** [hashtab.o] Error 1
a reported solution is to install db4-devel:
yum install db4-devel
]]>When a php file is in its default state “CLI”, php scripts will run as the apache user.
If there any files are uploaded or created with php, then those files will be saved as the apache user.
If there you would like to have php then run as the system user instead of “apache”, then you would need to install suPhp.
For doing so, type, after the “./build update_data” command, use this:
Please Note that all logs for suPhp are stored in:
/var/log/suphp.log
If there you get any “Internal Server Error” messages, check the suphp.log to see why.
Usually, the things like writeable by “all” or “group” … or have the incorrect ownership of the file would cause this.
Please Note that directories can not be tune to 777 with suPhp. 755 is usually the max permissions for directories (you do not need 777 with suphp since php writes as the User).
Files should be no more than 644, but php files can be 600 since they are read in by the User (security benefit with suPhp).
All files/folders must be chown to the user, and not to apache.
Please Note that the safe_mode and open_basedir settings in Admin Level -> Php Safemode Config only apply to php CLI, not suPhp.
If there you want open_basedir and safe_mode, use this guide to enable a per-user php.ini file.
You may there need to rewrite the webapps php scripts to reset the ownerships if you get internal server errors with them, eg:
[warn] (2)No such file or directory: Failed to enable the ‘dataready’ Accept Filter
If there you get the following error in your apache log:
[warn] (2)No such file or directory: Failed to enable the ‘dataready’ Accept Filter
Then add:
accf_data_load=”YES”
to your /boot/loader.confand run:
kldload accf_data.ko
If you are getting a curl compile error similar to this one:
/bin/sh ../libtool –tag=CC –mode=link
c -g0 -O2 -Wno-system-headers -o curl main.o hugehelp.o urlglob.o
writeout.o writeenv.o getpass.o homedir.o curlutil.o os-specific.o
strtoofft.o strdup.o rawstr.o nonblock.o ../lib/libcurl.la -lz
libtool: link: gcc -g0 -O2 -Wno-system-headers -o .libs/curl main.o
hugehelp.o urlglob.o writeout.o writeenv.o getpass.o homedir.o curlutil.o
os-specific.o strtoofft.o strdup.o rawstr.o nonblock.o
`stringprep_locale_charset@LIBIDN_1.0′
collect2: ld returned 1 exit status
make[2]: *** [curl] Error 1
make[2]: Leaving directory
`/usr/local/directadmin/custombuild/curl-7.20.0/src’
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/usr/local/directadmin/custombuild/curl-7.20.0/src’
make: *** [all-recursive] Error 1
it there you would mean that you are missing the libidn files. To add them, type:
yum install libidn libidn-devel
and compile again.
]]>For Any module that needs to be compiled it will have a –with- type flag which will need to be used. To add this flag, run the following:
cd /usr/local/directadmin/custombuild
mkdir -p custom/ap2
cp configure/ap2/configure.apache custom/ap2/configure.apache
vi custom/ap2/configure.apache
#add your –with-module line to the end of the file,
# and to make sure this character exist at the end of all lines except the latest one.
./build clean
./build apache
Then try restart apache:
RedHat:
/sbin/service httpd restart
FreeBSD:
/usr/local/etc/rc.d/httpd restart
Debian:
/etc/init.d/httpd restart
you may also need to recompile php as well If you face some problems :
./build php
Then try restart Apache again.
We are recommending you using php-fpm, or mod_ruid2+mod_php for User owned files to be upload by php.
When php is in it’s default state “CLI”, php scripts run as the apache user.
If there any files are uploading or creating with php, then the files will be save as the apache user.
If there you would like to have php run as the system user instead of “apache”, then you would need to install suPhp.
suPhp is an option that can be set when installing the custombuild script:
To do so, type, after the “./build update_data” command, use this:
Now Note that all logs for suPhp are store in:
/var/log/suphp.log
If there you get any “Internal Server Error” messages, check the suphp.log to see why.
Usually, things like write-able by “all” or “group” … or having the incorrect ownership of the file would cause this.
Please Note that directories can not be set to 777 with suPhp. 755 is usually the max permissions for directories (you do not need 777 with suphp since php writes as the User).
Files should be not more than 644, but php files can be 600 since they are reading in by the User (security benefit with suPhp).
All the files/folders must be chown to the user, and not with Apache.
Important:
Please Note that the safe_mode and open_basedir settings in Admin Level -> Php Safemode Config only can apply to php CLI, not suPhp.
If there you want to open_basedir and safe_mode,
You may need to rewrite the web-apps php scripts to reset the ownership’s if you are getting internal server errors with them, eg:
Now run the following (example uses apache 1.3.37, try change the version as needed to match the version you have):
cd /usr/local/directadmin/customapache/apache_1.3.37/src/modules/standard
gcc -shared -o mod_rewrite.so mod_rewrite.lo -lgdbm
cd ../../..
make install
Try Restart apache and it should be fixed up.
If you are getting the following error in your apache logs
[warn] (2)No such file or directory: Failes to enable the ‘httpready’ Accept Filter
Then add:
accf_http_load=”YES”
to your /boot/loader.confand run:
kldload accf_http
If there you get this error
/usr/lib/libexpat.so: could not read symbols: File in wrong format
to your apache configure file, add the following option :
–with-expat=builtin
You place that into:
/usr/local/directadmin/custombuild/custom/ap2/configure.apache
as:
“–with-expat=builtin” \
taking note of the \ character that must be present on all lines except for that last line.
You will need to copy this file to the above location:
/usr/local/directadmin/custombuild/configure/ap2/configure.apache
to ensure that your change remain after updating custombuild.
August 29, 2014
Another report solution (untested):
rpm -e expat-devel.i386
if you face an error like this one when compiling zzip:
gcc -DHAVE_CONFIG_H -I.. -I../.. -O2 -D_USE_MMAP -fomit-frame-pointer -Wall -Wstrict-prototypes -Wpointer-arith -Wsign-compare -Wmissing-declarations -c `test -f ../../bins/zziptest.c || echo ‘../../bins/’`../../bins/zziptest.c
../../bins/zziptest.c: In function ‘main’:
../../bins/zziptest.c:76: error: invalid lvalue in assignment
make[3]: *** [zziptest.o] Error 1
Then you will need to type the following.
cd /usr/local/directadmin/customapache/zziplib-0.10.82
wget -O bins/zziptest.c http://zziplib.sourceforge.net/zziptest.c
make
make install
assuming you’re using zziplib-0.10.82.
Please Note, the main changes are to insert:
#else
#define I_(_T,_L,_R) _L _R
#endif
just below if #endif after “#define O_BINARY 0” in the bins/zziptest.c file.
Then must change the line:
(char *)hdr += hdr->d_reclen;
to read:
I_(char *, hdr, += hdr->d_reclen);
this issue appears to be a casting issue, where the compiler was not letting the programmer do exactly what he wanted to.
This issue has been known to occur on Fedora 8 boxes and some 64-bit OS machines.
If there you see the above error anywhere, then install Data/Dumper:
wget http://www.cpan.org/modules/by-module/Data/Data-Dumper-2.121.tar.gz
tar xvzf Data-Dumper-2.121.tar.gz
cd Data-Dumper-2.121
perl Makefile.PL
make
make install
CustomBuild – current
If there you’re using a custombuild (as most new boxes are), now run the following
cd /usr/local/directadmin/custombuild
./build update
./build apache
./build php n
./build rewrite_confs
CustomApache – end-of-life
If there you are using customapache with the 1.3 version of it is to the most recent, now run the following:
cd /usr/local/directadmin/customapache
./build clean
./build update
./build apache_mod_ssl
If there you’re using apache 2.x, use “./build apache_2” instead of apache_mod_ssl.
This should be update both the configure options and the version of it to the most recent version. Once the update is completing, you will need to restart apache:
RedHat:
/sbin/service httpd restart
FreeBSD:
/usr/local/etc/rc.d/httpd restart
If you there encounter the following error message, this would imply that you do not have g++ installed:
The make has failed, if you want to try to make again? (y,n):
The gcc-c++ rpm and all it’s dependancies are requiring to resolve the issue.
Some dependancies inclue:
libstdc++-devel
libstdc++
Please run the following command on CentOS/RHEL/CloudLinux systems:
yum -y install gcc-c++
Debian/Ubuntu:
apt-get -y install g++
FreeBSD:
pkg install gcc
If you receive the this error
/usr/include/krb5.h:2606:24: et/com_err.h: No such file or directory
During compiling, run the following then try again:
yum install e2fsprogs-devel
or
up2date -u e2fsprogs-devel
For CentOS 6, this file is provided by:
yum install libcom_err-devel libcom_err
To update and compile everything, run the following:
If there you want to add any extra modules to apache, they will need to be compile in. Any module that needs to be compile in will have a –with-module type flag which will need to be used.
cd /usr/local/directadmin/customapache
vi configure.apache_ssl
#add your –with-module line to the end of the file, where –with-module should be replaced with requiring entry for the module you are installing.
See your module documentation.
# and then make sure the character exists at the end of all lines except the last one.
Then restart apache:
RedHat:
/sbin/service httpd restart
FreeBSD:
/usr/local/etc/rc.d/httpd restart
If there you run into problems, you may also need to recompile php as well:
./build php
Then you should restart apache again.
]]>