Исправляем - memcache.so: undefined symbol: mmc_queue_pop

Если вы столкнулись с ошибкой, подобной той, что написана в заголовке, это может означать, что ваше приложение может не работать при попытке использовать расширение memcache из-за неправильной или отсутствующей сборки расширения. “php: symbol lookup error: /usr/local/lib/php/extensions/no-debug-non-zts-20131226/memcache.so: undefined symbol: mmc_queue_pop” Чтобы исправить эту проблему, вам нужно передать опцию «fgnu89-inline» компилятору с переменной среды CFLAGS при установке пакета через pecl. Эта опция указывает компилятору C использовать традиционную семантику GNU для встроенных функций. Если модуль memcache был установлен из пакетов, нужно его удалить. 1 $ pecl uninstall memcache После установим заново, но немного иначе 1 $ yes|CFLAGS="-fgnu89-inline" pecl install memcache-3.0.8 Готово! Аналогичное решение можно применить при ручной сборке модуля. Нужно добавить -fgnu89-inline в переменную CFLAGS=. Чем я и занимался. Статья частично переведена google translate, особо времени доволить до ума небыло.

31 жовтня 2019 · 1 хвилина · 127 слів · dimetrius

Разные версии PHP на одной системе с Ubuntu

Вы можете использовать PPA для использования современных версий PHP, или установки прошлой версии PHP. (Например PHP 5.6 на Ubuntu 16.04 LTS) Наиболее часто используется репозиторий от Ondřej Surý, Debian PHP разработчика: ppa:ondrej/php (для PHP 5.6/7.0/7.1 и их подверсий, PHP 5.5 больше не поддерживается официально) Пакет совместимости php5: ppa:ondrej/php5-compat (для подмены php5 что бы разрешить зависимости со старыми пакетами (не точный перевод)) PHP PPA раньше содержал в себе Apache 2.4 обновления. Больше этих обновлений нет, они находятся в отдельном репозитории Apache 2.4: ppa:ondrej/apache2 (для Apache 2.4) Если вы всё же хотите использовать этот PPA, сделайте следующее: ppa:ondrej/php (для PHP 5.6/7.0/7.1) 1 2 3 4 5 6 sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get upgrade sudo apt-get install php7.1 # для PHP 7.1 sudo apt-get install php7.0 # для PHP 7.0 sudo apt-get install php5.6 # для PHP 5.6​ ppa:ondrej/php5-compat (для php5 compat) 1 2 3 4 5 sudo add-apt-repository ppa:ondrej/php sudo add-apt-repository ppa:ondrej/php5-compat sudo apt-get update sudo apt-get upgrade sudo apt-get install php5 # это установит php5.6 пакет ​ Если у вас нет add-apt-repository, выполните следующее: sudo apt-get install python-software-properties Самая последняя версия PHP 5.4 сейчас находится в отдельном репозитории PPA: ppa:ondrej/php5-oldstable ...

6 березня 2017 · 2 хвилин · 231 слово · dimetrius

Прямое подключение к PHP-FPM

Во время отладки иногда необходимо сначала выявить проблему и понять это проблема из-за PHP или Nginx делает что-то не правильно. В этом случае может пригодиться cgi-fcgi. Установка cgi-fcgi на Ubuntu Достаточно запустить команду: 1 apt-get install libfcgi0ldbl Подключение к PHP-FPM на прямую Предполагаем что вы запустили PHP-FPM используя TCP/IP с IP и PORT значениями 127.0.0.1 и 9000 соответственно. Ниже приведены некоторые примеры кода, которые вы можете использовать. Тест ответа PHP-FPM Ping Вы можете запустить следующий код из командной строки что бы протестировать ответ FPM: 1 2 3 4 SCRIPT_NAME=/ping \ SCRIPT_FILENAME=/ping \ REQUEST_METHOD=GET \ cgi-fcgi -bind -connect 127.0.0.1:9000 Должен быть возвращён подобный ответ: 1 2 3 4 Content-Type: text/plain Expires: Thu, 01 Jan 1970 00:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate, max-age=0 pong Тест ответа PHP-FPM Status Вы можете запустить следующий код из командной строки что бы протестировать ответ FPM 1 2 3 4 SCRIPT_NAME=/status \ SCRIPT_FILENAME=/status \ REQUEST_METHOD=GET \ cgi-fcgi -bind -connect 127.0.0.1:9000 Должен быть возвращён подобный ответ: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Expires: Thu, 01 Jan 1970 00:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate, max-age=0 Content-Type: text/plain pool: www process manager: dynamic start time: 08/Jan/2014:15:04:57 +0530 start since: 93492 accepted conn: 1215 listen queue: 0 max listen queue: 1 listen queue len: 0 idle processes: 26 active processes: 4 total processes: 30 max active processes: 34 max children reached: 0 slow requests: 150 Тест ответа PHP-FPM Full Status Если вы хотите протестировать ответ PHP-FPM Full Status, вы можете использовать команды: ...

15 лютого 2017 · 2 хвилин · 307 слів · dimetrius

Логирование отправки почты через phpmail

В PHP начиная с версии 5.3 добавить логирование довольно просто. Открываем файл /etc/php5/php.ini (или где он там у вас) и добавляем 2 строчки: 1 2 mail.add_x_header = On mail.log = /var/log/php.mail.log mail.add_x_header - добавляет заголовок для всех исходящих сообщений. mail.log - указывает путь к лог-файлу запускаемых скриптов, адресатов и заголовков. Убедитесь чтобы этот файл был доступен на запись веб-серверу (обычно это пользователь www-data). 1 2 touch /var/log/php-mail.log chown www-data:www-data /var/log/php-mail.log Для проверки создайте простой php скрипт: # vim /var/www/testmail.php 1 2 3 <?php mail('[email protected]', 'тема письма', 'тело письма', 'From: [email protected]'); ?> и запустите его на выполнение: # php /var/www/testmail.php # tail -f /var/log/phpmail.log Пусто не знаю чего, но логи не отобразились, в Exim /var/log/exim4/mainlog все окей письмо ушло. Если запустить браузер http://localhost/testmail.php все работает :) # tail -f /var/log/phpmail.log Теперь в заголовках письма будет вставляться следующее: X-PHP-Originating-Script: 0:testmail.php Где 0 — это UID, а testmail.php — это имя файла скрипта. В лог /var/log/phpmail.log будет падать более расширенная информация: 1 mail() on [/var/www/testmail.php:3]: To: [email protected] -- Headers: Вся статья скопирована в качестве заметки с сайта fb38064g.bget.ru

25 вересня 2016 · 1 хвилина · 175 слів · dimetrius

libzip отсутствует в PHP 5.3.10 в комплекте с Fedora 16, исправляем это

В соответствии с этой ошибкой, версия PHP 5.3.10, которая входит в Fedora 16 не включает libzip. Но мне для Joomla требуется PHP-модуль libzip, его отсутствие очень сильно ограничивает возможности Joomla. Следуйте шагам ниже, для установки php-модуля libzip: 1 2 3 4 5 6 7 8 9 cd /tmp wget http://pecl.php.net/get/zip-1.10.2.tgz tar zxf zip-1.10.2.tgz cd zip-1.10.2 phpize ./configure make make install rm -fr /tmp/zip-1.10.2.tgz ; rm -fr /tmp/zip-1.10.2 После этого не забудьте создать файл /etc/php.d/zip.ini со строкой внутри extension=zip.so

13 квітня 2016 · 1 хвилина · 78 слів · dimetrius

Понижение версии php 5.5.x до 5.4.х, 5.3.х на Debian, Ubuntu

Предлагаю компилировать из исходников версии 5.3.29 интерпретатор PHP, в Ubuntu 14.04. Подготовка 1 2 3 apt-get update apt-get install build-essential openssl libssl-dev openssl-blacklist openssl-blacklist-extra bison autoconf automake libtool re2c flex apache-prefork-dev apt-get install libxml2-dev libssl-dev libbz2-dev libcurl3-dev libdb5.1-dev libjpeg-dev libpng-dev libXpm-dev libfreetype6-dev libt1-dev libgmp3-dev libc-client-dev libldap2-dev libmcrypt-dev libmhash-dev freetds-dev libz-dev libmysqlclient15-dev ncurses-dev libpcre3-dev unixODBC-dev libsqlite-dev libaspell-dev libreadline6-dev librecode-dev libsnmp-dev libtidy-dev libxslt-dev libt1-dev Вычистим наш текущий php, в любом случае если что-то не получится мы без проблем сможем его установить заново. Итак удаляем текущую версию PHP: 1 2 3 apt-get remove php5-gd php5-curl php5-common apt-get remove --purge php5* apt-get autoremove После чего пошагово выполняем следующие команды в терминале: 1 2 3 4 5 6 7 sudo -i wget http://in1.php.net/distributions/php-5.3.29.tar.bz2 tar -xvf php-5.3.29.tar.bz2 cd php-5.3.29 ./configure make make install Вместо строки ./configure удобнее сделать следующее: #vim php53.sh Вставим в него строки: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ./configure --with-config-file-path=/etc/php5/apache2 \ -with-pear=/usr/share/php \ -with-bz2=/usr \ -with-curl=/usr \ -with-gd \ -enable-calendar \ -enable-mbstring \ -enable-bcmath \ -enable-sockets \ -enable-zip \ -with-libxml-dir=/usr \ -with-mysqli \ -with-mysql \ -with-openssl\ -with-regex=php \ -with-zlib \ -with-apxs2 Сохраним и выполним #sh php53.sh ...

13 квітня 2016 · 2 хвилин · 285 слів · dimetrius

Установка IonCube Loader на FreeBSD 8.3 x86_64

Скачиваем с сайта модуль подходящий для нашей архитектуры ОС: 1 wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_fre_8_x86-64.tar.gz Распаковываем архив: 1 tar -xvf ioncube_loaders_fre_8_x86-64.tar.gz Смотрим версию PHP: 1 2 3 4 php -v PHP 5.2.17 with Suhosin-Patch 0.9.7 (cli) (built: Mar 16 2012 09:27:38) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies Копируем модуль подходящий для нашей версии php, в директорию с модулями: 1 cp ioncube/ioncube_loader_fre_5.2* /usr/local/lib/php/20060613/ Добавляем в файл php.ini строчку перед zend_extension: # vi /usr/local/etc/php.ini 1 2 3 [Zend] zend_extension = /usr/local/lib/php/20060613/ioncube_loader_fre_5.2.so zend_extension_ts = /usr/local/lib/php/20060613/ioncube_loader_fre_5.2_ts.so ВНИМАНИЕ: Если у вас уже установлено какое-либо Zend Extension, то вам следует добавить эти строки ДО присутствующих строк zend_extension. Перезапускаем web-сервер Apache: #/usr/local/etc/rc.d/apache22 restart Проверяем: 1 2 3 4 5 php -v PHP 5.2.17 with Suhosin-Patch 0.9.7 (cli) (built: Mar 16 2012 09:27:38) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies with the ionCube PHP Loader v4.2.0, Copyright (c) 2002-2012, by ionCube Ltd.

13 квітня 2016 · 1 хвилина · 156 слів · dimetrius

Установка ionCube PHP Loader на Debian

Установка ionCube PHP loader достаточно проста, для этого вам необходимо скачать данный модуль соответствующий архитектуре Вашей ОС с сайта разработчика IonCube. Пример представлен по установке IonCube Loader на Debian 6.0 x86_64: Скачиваем архив с сайта разработчика следующей командой: 1 wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz Распаковываем архив выполнив команду: 1 tar -xvf ioncube_loaders_lin_x86-64.tar.gz Смотрим версию PHP командой: 1 2 3 4 #php -v PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 08:24:40) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies Копируем модули соответствующие версии PHP на сервере в директорию с модулями php или создаем отдельную директорию ioncube/ и копируем в нее (в данном случае мы создали отдельную директорию для модуля), следующей командой: 1 2 cp ioncube/ioncube_loader_lin_5.3.so /usr/lib/php5/ioncube/ cp ioncube/ioncube_loader_lin_5.3_ts.so /usr/lib/php5/ioncube/ Добавляем в файл php.ini или создаем отдельный файл ioncube.ini, в данном примере создаем отдельный файл в /etc/php5/conf.d/ioncube.ini и добавляем следующие строки: #vi /etc/php5/conf.d/ioncube.ini 1 2 zend_extension = /usr/lib/php5/ioncube/ioncube_loader_lin_5.3.so zend_extension_ts = /usr/lib/php5/ioncube/ioncube_loader_lin_5.3_ts.so Cохраняем изменения в файле и перезагружаем web-сервер Apache: #/etc/init.d/apache2 restart Проверяем результат установки модуля: #php -m 1 2 3 [Zend Modules] Zend Guard Loader the ionCube PHP Loader или 1 2 3 4 5 6 7 #php -v PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 08:24:40) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with the ionCube PHP Loader v4.2.0, Copyright (c) 2002-2012, by ionCube Ltd., and with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

13 квітня 2016 · 2 хвилин · 249 слів · dimetrius

Чеклист по оптимизации VPS на PHP/Mysql/Nginx

Как обеспечить более высокую производительность VPS сервера, который работает на Nginx + PHP + Mysql? В этой статье приведен чеклист основных настроек, которые позволят существенно оптимизировать работу сервера. Настройка займет не более 10 минут и не требует ничего, кроме редактирования конфигурационных файлов. Примеры настроек приведены для операционной системы Debian 7 и VPS сервера с 1 процессором и 512Мб оперативной памяти. Nginx Настройки выполняются в файле /etc/nginx/nginx.conf, а также в настройках виртуального хоста (обычно в папке /etc/nginx/sites-enabled) Количество воркеров Количество воркеров nginx’a должно совпадать с количеством ядер: 1 worker_processes 1; Cache-Control заголовки Установка заголовков Cache-Control позволит существенно разгрузить Ваш сервер от повторных обращений к файлам которые не изменяются (или изменяются редко, например css/js/jpg/png/gif): 1 2 3 location ~* \.(css|js|png|gif|jpg)$ { expires max; } Access log Лишние дисковые операции из-за записи логов нам не нужны, отключаем: 1 access_log off; Unix socket’ы Включаем unix-сокеты для работы с PHP: 1 2 3 4 5 6 location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; # также необходимо настроить php-fpm, см. ниже fastcgi_index index.php; include fastcgi_params; } PHP Настройки выполняются в файле конфигурации fpm php-fpm.conf, который в нашем случае находится тут /etc/php5/fpm/pool.d/www.conf. Unix socket’ы Убеждаемся, что php-fpm работает с unix-сокетами, а не с tcp: ...

18 травня 2014 · 3 хвилин · 500 слів · dimetrius

CentOS 5: контрольная панель Eaccelerator

This is a continuation of Eaccelerator Installation topic here. To install eAccelerator control panel, copy control.php to your main html folder. We’ll use /var/www/html and http://server.domain.com in our example. Through SSH Change directory. 1 cd /tmp/eaccelerator-0.9.5.2 Copy control.php to your main html folder. 1 cp control.php /var/www/html Edit control.php. Change $user and $pw to your desired username and password. 1 2 $user = "admin"; $pw = "eAccelerator"; Edit the file /etc/php.d/eaccelerator.ini vi /etc/php.d/eaccelerator.ini Add 1 eaccelerator.allowed_admin_path="/var/www/html/control.php" Save and exit. Restart Apache. 1 /etc/init.d/httpd restart View your eAccelerator control panel at http://server.domain.com/control.php

21 травня 2012 · 1 хвилина · 91 слово · dimetrius