是否可以安装法尔康(自定义的 PHP PECL 扩展/模块)在共享网络托管服务上使用控制面板,或者这通常需要 root 访问权限?
也就是说,我是否仍然可以在现有主机上以某种方式获得 phalcon 的好处,而无需租用 VPS?
答案1
您的网络托管服务商可能为您安装自定义扩展,问问也无妨。
但一般来说,大多数人会建议你升级到 VPS,这样你就可以获得完全的 root 访问权限,可以安装任何你想要的东西,而且对服务器其他用户的性能产生负面影响的风险更小。除非你选择“托管 VPS”,否则 VPS 可能需要额外的管理工作和技术知识,而这通常会增加相当可观的月费。
因此,假设我的主机不想为我启用自定义扩展,我开始研究是否可以自己做。我找到了一种方法甚至不需要 SSH 或命令行访问。
步骤1:获取phalcon.so
phalcon.so
您需要获取适合您的服务器环境和 PHP 版本的 正确构建。
cPanel 通常在 CentOS、Red Hat Enterprise Linux (RHEL) 或 CloudLinux 上运行。phalcon 网站提供了一些二进制版本供下载,但遗憾的是没有适用于 CentOS/RHEL 的版本。
以下是我为 CentOS 64 位编译的 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 将其上传到您的主目录。
第 2 步:启用扩展
您需要添加以下行php.ini
:
extension = /home/__USERNAME__/phalcon.so
(将 __USERNAME__ 替换为您的实际 cPanel 用户名)
我不确定所有的 cPanel 主机是否都是这样,但我的主机维特拉允许您将自定义文件放入php.ini
文件夹.user.ini
中public_html
,以覆盖默认的 PHP 设置。
您可以通过上传到服务器上的文件并从浏览器调用它来了解这是否可行<?php phpinfo();
。希望您能看到如下一行...
否则,您可能必须使用.user.ini
如下所示的文件...
请注意,对于.user.ini
文件,服务器通常会缓存它们 300 秒,因此如果您对某个文件进行更改,则可能需要最多 5 分钟才能使更改生效。
步骤 3:验证其是否有效
在浏览器中刷新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 构建),因此必须重新编译它。
如何自己编译 phalcon.so(或其他扩展)
很有可能,如果没有 root 访问权限,您将无法在 cPanel 服务器上运行编译器,因此您需要找到一个类似的服务器来执行此操作。以下是我所做的:
- 从此处下载 CentOS 6 VirtualBox 映像(或者点击此处查看完整列表)
- 启动它虚拟盒
- 使用 root 登录/反向登录
- (如果某些键盘字符显示不正确,请输入
loadkeys us
)
下一步是确保安装了正确的 PHP 主版本,这需要与你在 cPanel 网站主机上使用的内容相匹配如果您想要 CentOS 支持的默认版本(撰写本文时为 PHP 5.3)以外的其他版本的 PHP,请尝试以下操作:
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
获取 phalcon 并编译:
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以完成该过程。
希望这对其他人有所帮助。如果您有任何其他建议,请在下面评论。