Что проверяет унарный оператор -a?

Я столкнулся с похожей проблемой, и мне удалось заставить ее работать.

Мне пришлось установить сервер с Debian 9/nginx/php5.4, так что, хотя он не совсем соответствует вашим предварительным требованиям, я предполагаю, что решение аналогичное. Я перечислю шаги, которые я предпринял, которые решили это для меня.

По сути, вам нужно установить php из исходников, и это создает проблему, если вам нужна поддержка openssl (--с -openssl ), потому что старые версии PHP (<7.0 )не поддерживают t поддерживает openssl>=1.1.0, что является значением по умолчанию в Debian 9. Поэтому вам нужно собрать более старую версию openssl (. Я взял 1.0.1u ).

Но давайте сначала установим некоторые зависимости.

apt install build-essential checkinstall zip autoconf
apt install libfcgi-dev libfcgi0ldbl libmcrypt-dev libssl-dev libc-client2007e-dev libkrb5-dev libcurl4-openssl-dev
apt install libxml2-dev libcurl4-openssl-dev libpcre3-dev libbz2-dev libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libmhash-dev freetds-dev libmariadbclient-dev-compat unixodbc-dev libxslt1-dev

Затем мы создадим openssl.

cd /opt/
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
tar xzf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
./config shared --openssldir=/usr/local/openssl/ enable-ec_nistp_64_gcc_128
make depend
make
make install
ln -s /usr/local/openssl/lib /usr/local/openssl/lib/x86_64-linux-gnu

В качестве цепной реакции вам придется собрать libcurl и libc -клиент (для поддержки imap )со свежесобранным openssl. Начнем с libcurl.

cd /opt/
wget https://curl.haxx.se/download/curl-7.26.0.tar.gz
tar xzf curl-7.26.0.tar.gz
cd curl-7.26.0
env PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig LDFLAGS=-Wl,-rpath=/usr/local/openssl/lib./configure --with-ssl=/usr/local/openssl --with-zlib --prefix=/usr/local/curl
make
make install

Затем клиент libc -. На самом деле я использовал исходники из Debian 8, так как он включал в себя некоторые патчи. Сама сборка не удалась, но все же создала c -client.a, и это все, что мне было нужно.

cd /tmp/
wget http://http.debian.net/debian/pool/main/u/uw-imap/uw-imap_2007f\~dfsg-2.dsc
wget http://http.debian.net/debian/pool/main/u/uw-imap/uw-imap_2007f\~dfsg.orig.tar.gz
wget http://http.debian.net/debian/pool/main/u/uw-imap/uw-imap_2007f\~dfsg-2.debian.tar.gz
dpkg-source -x uw-imap_2007f\~dfsg-2.dsc imap-2007f
mv imap-2007f /usr/local/
cd /usr/local/imap-2007f/
touch {ipv6,lnxok}
make slx SSLINCLUDE=/usr/local/openssl/include/ SSLLIB=/usr/local/openssl/lib EXTRAAUTHENTICATORS=gss
mkdir lib include
cp c-client/*.c lib/
cp c-client/*.h include/
cp c-client/c-client.a lib/libc-client.a
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

Благодаря этому у меня было все необходимое для сборки PHP5.4. Обратите внимание, что у меня было предупреждение о привязках postgresql в компиляции (из-за несоответствия локальной и системной версии openssl ), поэтому я думаю, что вам придется создать свой собственный libpq, если вы хотите их использовать.

cd /opt/
PHP_VER=5.4.45
wget http://museum.php.net/php5/php-${PHP_VER}.tar.gz
tar xzf php-${PHP_VER}.tar.gz
cd php-${PHP_VER}
LDFLAGS="-Wl,-rpath=/usr/local/openssl/lib,-rpath=/usr/local/curl/lib" './configure'  --prefix=/usr/local/php-${PHP_VER} '--with-zlib-dir' '--with-freetype-dir' '--enable-fpm' '--enable-mbstring' '--with-libxml-dir=/usr' '--enable-soap' '--enable-calendar' '--with-curl=/usr/local/curl' '--with-mcrypt' '--with-zlib' '--with-gd' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-zlib' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-mbregex' '--with-mhash' '--enable-zip' '--with-pcre-regex' '--with-mysql' '--with-pdo-mysql' '--with-mysqli' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--enable-cgi' '--with-pear' '--enable-memcache' '--with-openssl=/usr/local/openssl' '--with-imap=/usr/local/imap-2007f' '--with-kerberos' '--with-imap-ssl' '--with-libdir=lib/x86_64-linux-gnu'
LDFLAGS="-Wl,-rpath=/usr/local/openssl/lib,-rpath=/usr/local/curl/lib" make
make install

Осталось только создать файлы php.ini и php -fpm.conf, которые являются тривиальными, настроить сокет php -fpm и создать скрипт инициализации (в Интернете есть множество примеров, я не могу выложить сюда полный файл )и конфигурацию вашего веб-сервера (fastcgi на сокете ).

1
06.08.2019, 11:57
1 ответ

В bashи некоторых других оболочках -aявляется синонимом-e(true, если файл существует ).

$ help test
...
      -a FILE        True if file exists.
...
      -e FILE        True if file exists.

Это не стандарт -и поддерживается не во всех оболочках, так что лучше на него не полагаться.

Обратите внимание, что справочная страница test(1)документирует внешнюю команду (/usr/bin/test, /usr/bin/[и т. д. ), а не встроенную -оболочку.

6
27.01.2020, 23:14

Теги

Похожие вопросы