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

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

Lisa Kudrow
发布: 2025-02-19 11:53:09
原创
646 人浏览过

如何在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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板