搜索
首页后端开发php教程如何在Heroku上安装自定义PHP扩展

如何在Heroku上安装自定义PHP扩展

在本教程中,我们将学习如何在Heroku上安装自定义扩展。具体来说,我们将安装phalcon。

钥匙要点

可以使用PHP buildpack工具在Heroku上安装自定义PHP扩展,例如Phalcon,该工具为在Heroku上运行应用程序的环境设置了。

该过程涉及在buildpack-php/bin目录中创建一个自定义的phalcon.sh文件,编辑bin/compile文件以执行它,并添加text extension = phalcon.so file。
  • >必须在Heroku上创建一个新的应用程序,并带有一个空的Composer.json文件,以表明它是PHP应用程序。 Heroku将启用相应的PHP扩展名,并将其放入支持/构建/扩展/no-debug-non-Zts-ZTS-20121212文件夹中。
  • >
  • >必须在procfile文件中指定Web根,然后将Phalcon网站克隆到Repo文件夹中。将所有提交推向中央存储库后,将创建一个运行的phalconphp.com克隆。
  • >注册并设置
  • 为了使用Heroku,您必须注册Heroku帐户。 Heroku通常与命令行界面一起使用。要使用该界面,您需要为操作系统安装HEROKU工具带软件包。如果您使用的是Linux,请打开终端并键入以下命令。
  • >
>安装工具带后,您可以从命令外壳访问Heroku命令。使用您在创建Heroku帐户时使用的电子邮件地址和密码进行身份验证:>

>在提示下按Enter上传您现有的SSH键或创建新的键,用于以后推动代码。 MBSTRING和MCRYPT是主要的 - 模板引擎(VOLT)以及某些验证器,Escaper和滤波器使用MBSTRING,而MCRYPT则在安全组件(生成安全的哈希等)中使用。 🎜> 为了安装上面的元素,我们将使用PHP buildpack工具。让我们解释一下这是什么意思。
wget -qO- https://toolbelt.heroku.com/install.sh | sh
根据官方的Heroku文档,BuildPacks提供了魔术和灵活性,使您在Heroku上运行您的应用程序如此简单。当您推动代码时,构建包是处理环境设置的组件,以便您的应用程序可以运行。 BuildPack可以安装依赖项,自定义软件,操纵资产,并执行运行应用程序所需的其他任何操作。 Heroku并不总是有构建包,它们是Cedar堆栈带来的新组件。

>您可以通过BuildPack文档获得有关这三个步骤以及更多信息的更多信息。

开始,我们在github上分配此代码。单击存储库中的“叉子”按钮。为了能够从事该项目,您需要将其克隆到本地机器。

运行以下代码:

wget -qO- https://toolbelt.heroku.com/install.sh | sh
>在您的$ home/buildpack-php/bin目录中创建phalcon.sh文件,其中包含以下内容:

heroku login


Enter your Heroku credentials.
Email: fcopensuse@gmail.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /home/duythien/.ssh/id_rsa.pub
此文件将安装phalcon,但是必须指示Heroku执行它。为此,您将必须编辑bin/compile文件,并在其中添加以下行:>

此外,您需要将文本扩展添加= phalcon.so添加到“ conf/php/php/php.ini”的文件:

<span>mbstring
</span><span>mcrypt
</span><span>openssl
</span><span>PDO
</span><span>PDO/Mysql
</span><span>PDO/Postgresql
</span><span>PDO/Sqlite
</span><span>PDO/Oracle</span>

现在,我们可以将新的构建包推到:

git clone https://github.com/duythien/heroku-buildpack-php.git buildpack-php
cd buildpack-php

>在Heroku

上创建一个新应用程序
#!/bin/bash
# Build Path: /app/.heroku/php/
dep_url=git://github.com/phalcon/cphalcon.git
phalcon_dir=cphalcon
echo "-----> Building Phalcon..."

### Phalcon
echo "[LOG] Downloading PhalconPHP"
git clone $dep_url -q
if [ ! -d "$phalcon_dir" ]; then
  echo "[ERROR] Failed to find phalconphp directory $phalcon_dir"
  exit
fi
cd $phalcon_dir/build

# /app/php/bin/phpize
# ./configure --enable-phalcon --with-php-config=$PHP_ROOT/bin/php-config
# make
# make install
BUILD_DIR=
ln -s $BUILD_DIR/.heroku /app/.heroku
export PATH=/app/.heroku/php/bin:$PATH
bash ./install
cd
echo "important extension phalcon into php.ini"
echo "extension=phalcon.so" >> /app/.heroku/php/etc/php/php.ini
>为您的应用创建一个目录,然后更改为:

>

>此外,您需要给Heroku指出此应用程序是PHP应用程序。为此,创建一个称为Composer.json的空文件。在UNIX系统上,您可以这样创建此文件:

>
[...]
source $BP_DIR/bin/phalcon
[...]
然后,执行以下操作以使我们的应用程序的存储库iNTAR INTAR INTAR INTAR INTICE:

>创建一个可以推动的新的Heroku应用程序,请使用CLI的CREATE命令:
[....]
extension=phalcon.so
; Local Variables:
; tab-width: 4
; End:

这将在Heroku Ready上创建应用程序,并等待我们的代码,并将GIT遥控器附加到我们本地代码库。您现在准备部署应用程序,但是尚无代码。请按照下一部分为您的应用程序添加一些内容。
git add -A
git commit -m "edit php.ini and create phalcon file"
git push origin master
>

您的composer.json文件应该看起来像这样:

>
mkdir phalcon-dev
cd phalcon-dev

>它将在Heroku上自动安装McRypt,MbString等扩展名。如果您需要mongodb,memcached等,请进一步修改文件:>

现在,Heroku将启用相应的PHP扩展名,并将它们放入支持/构建/扩展/no-debug-non-ZTS-20121212文件夹中。接下来,创建一个带有以下内容的test.php文件:

>
touch composer<span>.json</span>

最后,让我们部署Phalcon安装:>

git init
git add -A
git commit -m" first commit"
第一个命令是指通过在buildpack_url config var中指定自定义buildpack来覆盖heroku默认的buildpack。几分钟后,结果如下:

heroku create phalcon-dev

Creating phalcon-dev... done, stack is cedar
http://phalcon-dev.herokuapp.com/ | git@heroku.com:phalcon-dev.git
Git remote heroku added
>这将我们的代码推向了Heroku,确定了它,并对它进行了构建过程,从而准备好进行部署。现在,我们的应用程序已在互联网上使用!要验证这一点,请立即打开:

<span>{
</span>  <span>"require": {
</span>    <span>"php": "5.5.12"
</span>  <span>}
</span><span>}</span>
如果一切顺利,您应该在浏览器中看到以下屏幕:

>

<span>{
</span>  <span>"require": {
</span>    <span>"php": "5.5.12",
</span>    <span>"ext-memcached": "*",
</span>    <span>"ext-mongo": "*"
</span>  <span>}
</span><span>}</span>

>配置Web根并部署示例站点

现在是指定Web根的棘手部分。指定Web根需要更多的工作和背景信息。 Phalcon网站应用程序的根源是/app/phalcon-website/public。对于Heroku来说,默认情况下,Web根是Git-Tree的根。该目录在内部映射到 /应用程序。为了改变这一点,我们需要创建一个所谓的procfile,每次heroku应用网络节点启动时都会启动SH-Script。然后,该脚本修改了服务器配置,并包含您自己的配置,该配置将Web root设置为/App/phalcon-website/public。创建一个带有以下内容的procfile文件(如果您使用的是Apache):

>
wget -qO- https://toolbelt.heroku.com/install.sh | sh

>克隆phalcon网站进入repo文件夹,完成后,git push命令将您本地主体上的所有提交发送到中央存储库。

heroku login


Enter your Heroku credentials.
Email: fcopensuse@gmail.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /home/duythien/.ssh/id_rsa.pub
>访问该应用程序的公共URL,瞧,您在Heroku上有一个运行的phalconphp.com。

如何在Heroku上安装自定义PHP扩展总结

在Heroku上安装Phalcon(或任何其他PHP扩展)显然既不容易也不简单,但是如果您使用buildpacks,它将变得更加平易近人。

>

>在下面的评论中留下您的反馈,一如既往,如果您喜欢的话,请分享本文!

经常询问有关在Heroku

上安装自定义PHP扩展的问题(常见问题解答)

>如何在Heroku上安装自定义PHP扩展?首先,您需要在项目root中创建一个名为“ composer.json”的文件。该文件将包含您要安装的PHP扩展名。例如,如果要安装'gd'扩展程序,则您的“ composer.json”文件应该看起来像:

{

{

“ require”:{“ ext-gd”: “*”

}
}

创建'composer.json'文件后,您需要在终端中运行'Composer Update'命令。这将在您的项目root中创建一个“ composer.lock”文件。您需要将“ composer.json”和“ composer.lock”文件提交给您的git存储库。最后,您可以使用“ Git Push Heroku Master”命令将更改推向Heroku。 Heroku将自动安装您的“ composer.json”文件中指定的PHP扩展。

在尝试在Heroku上安装PHP扩展程序时,为什么会遇到错误?一个常见的原因是,您要安装的扩展名与您使用的PHP版本不兼容。您可以通过在终端中运行“ PHP -V”命令来检查PHP版本。如果扩展名与您的PHP版本不兼容,则需要更新PHP版本或找到与您的PHP版本兼容的扩展版。

获得错误的另一个常见原因是PECL存储库中不可用。 Heroku使用PECL存储库来安装PHP扩展。如果该扩展名在PECL存储库中不可用,则不能在Heroku上安装它。


我可以在Heroku上使用自定义的php.ini文件吗? .ini在Heroku上归档。为此,您需要在项目根部创建一个“ .user.ini”文件。此文件将包含您的自定义PHP设置。例如,如果要增加最大文件上传大小,则您的'.user.ini'文件应该看起来像这样:

upload_max_filesize = 10mpost_max_size = 10m

“ .user.ini”文件,您需要将其提交给您的git存储库,并将更改推向Heroku。 Heroku将自动应用您的“ .user.ini”文件中指定的设置。


如何在Heroku上更新我的php版本?

>在Heroku上更新您的PHP版本涉及几个步骤。首先,您需要在“ Composer.json”文件中指定新的PHP版本。例如,如果要更新到php 7.4,则您的“ composer.json”文件应该看起来像:

{

{

“ requiend”:{ {“ php”:“^7.4”

}

}
更新'composer.json'文件后,您需要在终端中运行'Composer Update'命令。这将更新“ composer.lock”文件。您需要将“ composer.json”和“ composer.lock”文件提交给您的git存储库。最后,您可以使用“ Git Push Heroku Master”命令将更改推向Heroku。 Heroku将自动更新您的php版本。

>我可以使用自定义的构建包在Heroku上安装PHP扩展吗? BuildPack是Heroku在将更改推向平台时运行的脚本。它负责设置应用程序的环境并安装其依赖项。

要使用自定义构建包,您需要在“ app.json”文件或Heroku仪表板中指定它。例如,如果要使用“ heroku/php'buildpack,则您的'app.json'文件应该看起来像这样:

{
{
“ buildpacks”:[
{
{
{
{ “ url”:“ heroku/php”
}
>]
}
}

在指定buildpack之后,您可以推动更改到埃罗子。 Heroku将自动运行BuildPack并安装其中指定的PHP扩展名。

>在Heroku上安装PHP扩展时,我如何故障排除问题? ,但是您可以使用一些策略。首先,您可以检查Heroku日志中是否有任何错误消息。您可以通过在终端中运行“ Heroku Logs”命令来访问日志。日志可以为您提供有关导致问题的线索的线索。

>第二,您可以使用“ Heroku Run”命令直接在Heroku应用程序上运行命令。例如,您可以运行“ PHP -M”命令以列出所有已安装的PHP扩展名。这可以帮助您验证是否已安装了特定的扩展名。

>最后,您可以使用“ Heroku Config”命令来检查Heroku应用程序的配置。这可以帮助您验证您的自定义php.ini设置是否已应用。

>

>我可以安装Heroku上的PECL存储库中不可用的PHP扩展名吗? Heroku的PECL存储库中无法使用的PHP扩展。 Heroku使用PECL存储库来安装PHP扩展。如果扩展名在PECL存储库中不可用,则不能在Heroku上安装。自定义构建包可以包含脚本以编译和安装来自源的PHP扩展。这需要对PHP和Unix shell脚本的高级知识。

>我如何验证是否在Heroku上安装了PHP扩展?您的Heroku应用程序上的'php -m'命令。此命令列出了所有已安装的PHP扩展名。您可以在终端中使用“ Heroku Run”命令来运行此命令。例如,您可以运行以下命令以列出所有已安装的PHP扩展名:

HEROKU RUN PHP -M

如果安装了扩展名,则应显示在已安装的PHP扩展名列表中。

>我可以在Heroku上安装多个PHP扩展吗?为此,您需要指定要在“ composer.json”文件中安装的所有扩展名。例如,如果要安装'gd'和'mbString'扩展名,则您的'composer.json'文件应该看起来像这样:

{
{
-gd“:”*“,
” ext-mbstring“:”*“
}
}
}

更新后“ Composer.json”文件,您需要在终端中运行“ Composer Update”命令。这将更新“ composer.lock”文件。您需要将“ composer.json”和“ composer.lock”文件提交给您的git存储库。最后,您可以使用“ Git Push Heroku Master”命令将更改推向Heroku。 Heroku将自动安装您的'composer.json'文件中指定的PHP扩展名。

>我可以使用'php.ini'文件在Heroku上安装php扩展名?使用“ php.ini”文件在Heroku上安装PHP扩展。 Heroku不支持安装PHP扩展的“ php.ini”文件。相反,您需要使用“ composer.json”文件来指定要安装的PHP扩展名。将更改推向平台时,Heroku将自动安装“ composer.json”文件中指定的PHP扩展。

>

以上是如何在Heroku上安装自定义PHP扩展的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在Laravel中使用Flash会话数据在Laravel中使用Flash会话数据Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

构建具有Laravel后端的React应用程序:第2部分,React构建具有Laravel后端的React应用程序:第2部分,ReactMar 04, 2025 am 09:33 AM

这是有关用Laravel后端构建React应用程序的系列的第二个也是最后一部分。在该系列的第一部分中,我们使用Laravel为基本的产品上市应用程序创建了一个RESTFUL API。在本教程中,我们将成为开发人员

php中的卷曲:如何在REST API中使用PHP卷曲扩展php中的卷曲:如何在REST API中使用PHP卷曲扩展Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

简化的HTTP响应在Laravel测试中模拟了简化的HTTP响应在Laravel测试中模拟了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12个最佳PHP聊天脚本在Codecanyon上的12个最佳PHP聊天脚本Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

Laravel中的通知Laravel中的通知Mar 04, 2025 am 09:22 AM

在本文中,我们将在Laravel Web框架中探索通知系统。 Laravel中的通知系统使您可以通过不同渠道向用户发送通知。今天,我们将讨论您如何发送通知OV

解释PHP中晚期静态结合的概念。解释PHP中晚期静态结合的概念。Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

PHP记录:PHP日志分析的最佳实践PHP记录:PHP日志分析的最佳实践Mar 10, 2025 pm 02:32 PM

PHP日志记录对于监视和调试Web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题并支持更快的故障排除

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)