如何在我的共享 cPanel 网络主机上安装 phalcon(或任何自定义 PHP 模块/扩展)?

Sim*_*ast 5 php

是否可以在使用cPanel的共享网络托管服务上安装phalcon(自定义 PHP PECL 扩展/模块),或者它通常需要 root 访问权限?

也就是说,我是否仍然可以在我现有的主机上以某种方式获得 phalcon 的好处而不必租用 VPS?

Sim*_*ast 8

您的网络托管服务商可能会为您安装自定义扩展程序,询问也无妨。

但大多数情况下,通常会建议您升级到 VPS,它允许您拥有完全的 root 访问权限,能够安装您想要的任何东西,并且降低对服务器其他用户的性能产生负面影响的风险。VPS 可能需要额外的管理工作和技术知识,除非您选择“托管 VPS”,这通常会增加每月的大量成本。

因此,假设我的主机不想为我启用自定义扩展,我开始探索是否可以自己完成。我找到了一种无需 SSH 或命令行访问的方法

第一步:获取phalcon.so

您需要phalcon.so为您的服务器环境和 PHP 版本获取正确的构建版本。

cPanel 通常在 CentOS、Red Hat Enterprise Linux (RHEL) 或 CloudLinux 上运行。phalcon 站点提供了一些二进制版本供下载,但遗憾的是 CentOS/RHEL 没有。

这是我使用 PHP 5.3 和 5.4 为 CentOS 64 位编译的文件。如果您愿意,欢迎您尝试,直到其他人提供二进制文件,或者请参阅下面有关如何编译自己的文件的说明。

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 将其上传到您的主目录。

第 2 步:启用扩展

您需要将以下行添加到php.ini

extension = /home/__USERNAME__/phalcon.so
Run Code Online (Sandbox Code Playgroud)

(用您的实际 cPanel 用户名替换 __USERNAME__)

我不确定是否所有 cPanel 主机都是这样,但我的主机VentraIP允许您将自定义php.ini.user.ini文件放在public_html文件夹中,以覆盖默认的 PHP 设置。

您可以通过上传<?php phpinfo();到服务器上的文件并从浏览器调用它来提示这是否可行。希望你会有像下面这样的一行...

自定义 PHP.ini 文件

否则,您可能必须使用.user.ini如下所示的文件...

.user.ini 文件 PHP

请注意,对于.user.ini文件,这些文件通常由服务器缓存 300 秒,因此如果您对其中一个进行更改,则更改可能需要长达 5 分钟才能生效。

第 3 步:验证它是否有效

phpinfo()在浏览器中刷新页面。如果 phalcon 已正确加载,您会发现显示的附加部分如下所示:

已启用 phalcon phpinfo 扩展

如果你已经到了这一步,万岁!

不工作?

通过添加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 构建),因此不得不重新编译它。

如何自己编译 phalcon.so(或其他扩展)

很有可能,您将无法在没有 root 访问权限的情况下在您的 cPanel 服务器上运行编译器,因此您需要找到一个类似的服务器来执行此操作。这是我所做的:

下一步是确保您安装了正确的 PHP 主要版本,这需要与您在 cPanel 网络主机上使用的内容相匹配。如果你想要一个不同于 CentOS 支持的默认版本的 PHP(在撰写本文时为 PHP 5.3),试试这个:

sudo rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
sudo yum install php54w-devel        # FOR PHP 5.4 ONLY
Run Code Online (Sandbox Code Playgroud)

(否则,要使用 CentOS 默认版本:)

sudo yum install php-devel           # FOR PHP 5.3 ONLY
Run Code Online (Sandbox Code Playgroud)

然后安装其余的先决条件:

sudo yum install php-mysql gcc libtool git
Run Code Online (Sandbox Code Playgroud)

获取 phalcon 并编译:

git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install
Run Code Online (Sandbox Code Playgroud)

完成后,它会告诉您 phalcon.so 文件在哪里。然后您可以通过 FTP 将其上传到您的 cPanel 主目录。

sudo yum install ftp
ftp myhostname.com
put /usr/lib64/php/modules/phalcon.so /phalcon.so
Run Code Online (Sandbox Code Playgroud)

然后返回到步骤 2 和 3 以完成该过程。

希望能帮助其他人。如果您有任何其他提示要提供,请在下面发表评论。

  • 嗨@deagh,是的,鼓励这样做。请参见此处:http://serverfault.com/help/self-answer (2认同)
  • 只是对未来尝试的说明,如果您想确定主机运行的正确 centos 版本,请查看标题为“系统”的 phpinfo() 输出顶部:2.6.32-531.23.3.lve1.2.66.el6.x86_64 来自首先,您可以获得内核版本和架构,然后将其与维基百科的列表进行匹配:http://en.wikipedia.org/wiki/CentOS#CentOS_releases(单击显示) (2认同)