Можно ли установить фалкон (настраиваемое расширение / модуль PHP PECL) на общем веб-хостинге, который использует cPanel, или для этого обычно требуется root-доступ?
То есть, могу ли я каким-то образом получить преимущества phalcon на моем существующем хосте без необходимости аренды VPS?
Ваш веб-хостинг может установите для вас пользовательские расширения, не помешает спросить.
Но большинство из них, как правило, рекомендуют вам перейти на VPS, который дает вам полный root-доступ, возможность устанавливать все, что вы хотите, и меньший риск того, что вы негативно повлияете на производительность для других пользователей сервера. VPS могут потребовать дополнительных усилий по администрированию и технических знаний, если вы не выберете «Управляемый VPS», который обычно добавляет значительную ежемесячную стоимость.
Итак, предполагая, что мой хост не захочет включать для меня настраиваемое расширение, я решил выяснить, могу ли я сделать это самостоятельно. Я нашел способ сделать это даже без доступа к SSH или командной строке.
Вам необходимо получить правильную сборку phalcon.so
для вашей серверной среды и версии PHP.
cPanel обычно работает на CentOS, Red Hat Enterprise Linux (RHEL) или CloudLinux. Сайт phalcon предлагает для загрузки несколько бинарных версий, но, к сожалению, ничего для CentOS / RHEL.
Вот файлы, которые я скомпилировал для CentOS 64bit с PHP 5.3 и 5.4. Вы можете попробовать это, если хотите, пока другие не сделают доступными двоичные файлы, или см. Ниже инструкции о том, как скомпилировать свои собственные.
https://dl.dropboxusercontent.com/u/9911892/phalcon/1.3.2/PHP5.3/phalcon.so https://dl.dropboxusercontent.com/u/9911892/phalcon/1.3.2/PHP5.4/phalcon.so
Загрузите это через FTP в свой домашний каталог.
Вам нужно добавить следующую строку в php.ini
:
extension = /home/__USERNAME__/phalcon.so
(Замените __USERNAME__ своим фактическим именем пользователя cPanel)
Я не уверен, что все хосты cPanel такие, но мой хост VentraIP позволяет поставить кастомный php.ini
или .user.ini
файл в вашем public_html
папка, которая отменяет настройки PHP по умолчанию.
Вы можете получить подсказку, возможно ли это, загрузив <?php phpinfo();
в файл на вашем сервере и вызовите его из браузера. Надеюсь, у вас будет строка, подобная приведенной ниже ...
В противном случае вам, возможно, придется использовать .user.ini
файлы, которые отображаются вот так ...
Обратите внимание, что с .user.ini
файлы, они обычно кэшируются сервером в течение 300 секунд, поэтому, если вы измените один из них, это может занять до 5 минут, чтобы изменение вступило в силу.
Обновите свой phpinfo()
страницу в браузере. Если phalcon загрузился правильно, вы увидите дополнительный раздел, который выглядит следующим образом:
Если вы зашли так далеко, ура!
Включите ведение журнала ошибок, добавив error_log = /home/__USERNAME__/error.log
на ваш php.ini
или .user.ini
и обновить phpinfo()
файл. Затем проверьте журнал на наличие очевидных ошибок. Если вы не получаете никаких ошибок и phalcon не отображается, вероятно, ваш сервер неправильно читает ваш ini-файл. Это точно в твоем public_html
папка? Вы пробовали оба php.ini
и .user.ini
форматы?
С первой попытки я начал получать эту ошибку, появляющуюся в моих журналах:
PHP Warning: PHP Startup: Unable to load dynamic library '/home/yumpstag/phalcon.so' - /home/yumpstag/phalcon.so: undefined symbol: output_globals in Unknown on line 0
Я обнаружил, что у меня неправильная версия phalcon.so
(построен для PHP 5.3 вместо 5.4), поэтому пришлось его перекомпилировать.
Скорее всего, вы не сможете запустить компилятор на своем сервере cPanel без корневого доступа, поэтому вам нужно будет найти аналогичный сервер для этого. Вот что я сделал:
loadkeys us
)Следующий шаг - убедиться, что у вас установлена правильная основная версия PHP, это должно соответствовать тому, что вы используете на своем веб-хосте cPanel. Если вам нужна другая версия PHP, отличная от версии по умолчанию, поддерживаемой CentOS (PHP 5.3 на момент написания), попробуйте следующее:
sudo rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
sudo yum install php54w-devel # FOR PHP 5.4 ONLY
(В противном случае использовать версию CentOS по умолчанию :)
sudo yum install php-devel # FOR PHP 5.3 ONLY
Затем установите остальные необходимые компоненты:
sudo yum install php-mysql gcc libtool git
Получить фалкон и скомпилировать:
git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install
По завершении он сообщит вам, где находится файл phalcon.so. Затем вы можете загрузить его через FTP в домашний каталог cPanel.
sudo yum install ftp
ftp myhostname.com
put /usr/lib64/php/modules/phalcon.so /phalcon.so
Затем вернитесь к шагам 2 и 3, чтобы завершить процесс.
Надеюсь, что это поможет другим. Прокомментируйте ниже, если у вас есть какие-либо дополнительные советы.