Series of issues with FreeBSD 10.3
Hi everyone!
So, the latest version of FusionDirectory is broken in a few ways on FreeBSD 10.3. I have not yet successfully gotten it to run. I am following the directions from https://documentation.fusiondirectory.org/en/documentation/admin_installation_from_source . So far I did the following:
For PHP requirements:
pkg install nginx php56 php56-ldap php56-gettext php56-curl php56-iconv php56-hash php56-imap php56-mbstring pear-MDB2_Driver_mysql pear-MDB2_Driver_mysqli pecl-imagick php56-openssl php56-session
For Perl requirements:
pkg install p5-Path-Class p5-perl-ldap p5-Mime-Base64 p5-Crypt-PasswdMD5 p5-Crypt-CBC p5-File-Copy-Recursive p5-Archive-Extract p5-XML-Twig
So far so good. Next, fetch the packages:
cd /var/www fetch https://github.com/fusiondirectory/fusiondirectory/archive/fusiondirectory-1.0.20.tar.gz fetch -o fusiondirectory-plugins-1.0.20.tar.gz https://github.com/fusiondirectory/fusiondirectory-plugins/archive/fusiondirectory-1.0.20.tar.gz
Installing core by the source directions is mostly fine. Due to the different paths in FreeBSD, I have to use the following flags:
fusiondirectory-setup --set-fd_config_dir=/usr/local/etc/fusiondirectory --set-ldap_conf=/usr/local/etc/openldap/ldap.conf --set-fd_smarty_dir=/usr/local/share/smarty3 --write-vars --check-directories --update-cache --update-locales
+BUG+: The following error occurs:
Setting fd_config_dir to /usr/local/etc/fusiondirectory Setting ldap_conf to /usr/local/etc/openldap/ldap.conf Setting fd_smarty_dir to /usr/local/share/smarty3 Choose FusionDirectory Directories Checking FusionDirectory's directories ! Looks like you are not a Debian, Suse, Redhat or Mageia, I don't know your distribution ! What is your apache group?: www /var/www/fusiondirectory exists… /var/www/fusiondirectory is not set properly, do you want to fix it ?: [Yes/No]? yes Use of uninitialized value $group_gid in chown at /usr/local/bin/fusiondirectory-setup line 483, line 2. /usr/local/etc/fusiondirectory exists… -- snip --
Cause: This is because in FreeBSD, the root group is "wheel". If you hard-set $group = 'wheel';, for example, then it works fine.
+BUG+: If I try to install plugins, it errors out:
# fusiondirectory-setup --set-fd_config_dir=/usr/local/etc/fusiondirectory --set-ldap_conf=/usr/local/etc/openldap/ldap.conf --set-fd_smarty_dir=/usr/local/share/smarty3 --write-vars --check-directories --update-cache --update-locales --install-plugins Setting fd_config_dir to /usr/local/etc/fusiondirectory Setting ldap_conf to /usr/local/etc/openldap/ldap.conf Setting fd_smarty_dir to /usr/local/share/smarty3 Choose FusionDirectory Directories Checking FusionDirectory's directories ! Looks like you are not a Debian, Suse, Redhat or Mageia, I don't know your distribution ! What is your apache group?: www /var/www/fusiondirectory exists… Rights on /var/www/fusiondirectory are correct /usr/local/etc/fusiondirectory exists… Rights on /usr/local/etc/fusiondirectory are correct /var/spool/fusiondirectory exists… Rights on /var/spool/fusiondirectory are correct /var/cache/fusiondirectory exists… Rights on /var/cache/fusiondirectory are correct /var/cache/fusiondirectory/tmp exists… Rights on /var/cache/fusiondirectory/tmp are correct /var/cache/fusiondirectory/fai exists… Rights on /var/cache/fusiondirectory/fai are correct /var/cache/fusiondirectory/template exists… Rights on /var/cache/fusiondirectory/template are correct Updating class.cache Updating translations Installing FusionDirectory's plugins Where is your plugins archive ?: /var/www/fusiondirectory-plugins-1.0.20.tar.gz Installing plugins into /var/www/fusiondirectory, please wait... Can't open directory /tmp/fusiondirectory-plugins-1.0.20: No such file or directory at /usr/local/bin/fusiondirectory-setup line 1139.
Cause: This is because the directory structure within the plugins .tar.gz from Github.com extracts to /tmp/fusiondirectory-plugins-fusiondirectory-1.0.20/. If you mv this to /tmp/fusiondirectory-plugins-1.0.20/, it works fine.
Now you in theory should be all set to run it from Nginx/Apache/etc. But, no...
+BUG+: If you try to view index.php or setup.php, you get this error:
PHP Fatal error: require(): Failed opening required '/usr/local/share/smarty3' (include_path='.:/var/www/fusiondirectory/include:/usr/share/php:/usr/share/php') in /var/www/fusiondirectory/include/php_setup.inc on line 334 Fatal error: require(): Failed opening required '/usr/local/share/smarty3' (include_path='.:/var/www/fusiondirectory/include:/usr/share/php:/usr/share/php') in /var/www/fusiondirectory/include/php_setup.inc on line 334
Cause: This is because in /var/www/fusiondirectory/include/variables.inc, SMARTY is set to /usr/local/share/smarty3 (that's fine). But in /var/www/fusiondirectory/include/php_setup.inc, it calls require(SMARTY); which tries to require() the whole directory.
Fix: Change that line to require(SMARTY.'/Smarty.class.php');
From this point, I hope everything is fine. Still nope...
+BUG+: Smarty3 from FreeBSD doesn't seem to play well with FusionDirectory. If I run setup.php from the command line to view errors, I get this:
# php setup.php ldap_create ldap_url_parse_ext(ldap://localhost:389) ldap_sasl_bind_s ldap_sasl_bind ldap_send_initial_request ldap_new_connection 1 1 0 ldap_int_open_connection ldap_connect_to_host: TCP localhost:389 ldap_new_socket: 5 ldap_prepare_socket: 5 ldap_connect_to_host: Trying 127.0.0.1:389 ldap_pvt_connect: fd: 5 tm: -1 async: 0 attempting to connect: connect errno: 61 ldap_close_socket: 5 ldap_new_socket: -1 ldap_err2string PHP Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "file:/var/www/fusiondirectory/setup/setup_welcome.tpl" on line 3 "{t}This seems to be the first time you start FusionDirectory - we didn't find any configuration right now. This simple wizard intends to help you while setting it up.{/t}" unknown tag "t" <-- thrown in /usr/local/share/smarty3/sysplugins/smarty_internal_templatecompilerbase.php on line 3 Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "file:/var/www/fusiondirectory/setup/setup_welcome.tpl" on line 3 "{t}This seems to be the first time you start FusionDirectory - we didn't find any configuration right now. This simple wizard intends to help you while setting it up.{/t}" unknown tag "t" <-- thrown in /usr/local/share/smarty3/sysplugins/smarty_internal_templatecompilerbase.php on line 3
This is where I eventually gave up. :(