目录
>配置Web根并部署示例站点
{
>我可以使用自定义的构建包在Heroku上安装PHP扩展吗? BuildPack是Heroku在将更改推向平台时运行的脚本。它负责设置应用程序的环境并安装其依赖项。
在指定buildpack之后,您可以推动更改到埃罗子。 Heroku将自动运行BuildPack并安装其中指定的PHP扩展名。
>我可以安装Heroku上的PECL存储库中不可用的PHP扩展名吗? Heroku的PECL存储库中无法使用的PHP扩展。 Heroku使用PECL存储库来安装PHP扩展。如果扩展名在PECL存储库中不可用,则不能在Heroku上安装。自定义构建包可以包含脚本以编译和安装来自源的PHP扩展。这需要对PHP和Unix shell脚本的高级知识。
如果安装了扩展名,则应显示在已安装的PHP扩展名列表中。
>我可以在Heroku上安装多个PHP扩展吗?为此,您需要指定要在“ composer.json”文件中安装的所有扩展名。例如,如果要安装'gd'和'mbString'扩展名,则您的'composer.json'文件应该看起来像这样:
>
首页 后端开发 php教程 如何在Heroku上安装自定义PHP扩展

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

Feb 19, 2025 am 11:53 AM

如何在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

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1597
29
PHP教程
1488
72
PHP变量范围解释了 PHP变量范围解释了 Jul 17, 2025 am 04:16 AM

PHP变量作用域常见问题及解决方法包括:1.函数内部无法访问全局变量,需使用global关键字或参数传入;2.静态变量用static声明,只初始化一次并在多次调用间保持值;3.超全局变量如$_GET、$_POST可在任何作用域直接使用,但需注意安全过滤;4.匿名函数需通过use关键字引入父作用域变量,修改外部变量则需传递引用。掌握这些规则有助于避免错误并提升代码稳定性。

如何在PHP中牢固地处理文件上传? 如何在PHP中牢固地处理文件上传? Jul 08, 2025 am 02:37 AM

要安全处理PHP文件上传需验证来源与类型、控制文件名与路径、设置服务器限制并二次处理媒体文件。1.验证上传来源通过token防止CSRF并通过finfo_file检测真实MIME类型使用白名单控制;2.重命名文件为随机字符串并根据检测类型决定扩展名存储至非Web目录;3.PHP配置限制上传大小及临时目录Nginx/Apache禁止访问上传目录;4.GD库重新保存图片清除潜在恶意数据。

在PHP中评论代码 在PHP中评论代码 Jul 18, 2025 am 04:57 AM

PHP注释代码常用方法有三种:1.单行注释用//或#屏蔽一行代码,推荐使用//;2.多行注释用/.../包裹代码块,不可嵌套但可跨行;3.组合技巧注释如用/if(){}/控制逻辑块,或配合编辑器快捷键提升效率,使用时需注意闭合符号和避免嵌套。

发电机如何在PHP中工作? 发电机如何在PHP中工作? Jul 11, 2025 am 03:12 AM

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

撰写PHP评论的提示 撰写PHP评论的提示 Jul 18, 2025 am 04:51 AM

写好PHP注释的关键在于明确目的与规范,注释应解释“为什么”而非“做了什么”,避免冗余或过于简单。1.使用统一格式,如docblock(/*/)用于类、方法说明,提升可读性与工具兼容性;2.强调逻辑背后的原因,如说明为何需手动输出JS跳转;3.在复杂代码前添加总览性说明,分步骤描述流程,帮助理解整体思路;4.合理使用TODO和FIXME标记待办事项与问题,便于后续追踪与协作。好的注释能降低沟通成本,提升代码维护效率。

快速PHP安装教程 快速PHP安装教程 Jul 18, 2025 am 04:52 AM

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

如何通过php中的索引访问字符串中的字符 如何通过php中的索引访问字符串中的字符 Jul 12, 2025 am 03:15 AM

在PHP中获取字符串特定索引字符可用方括号或花括号,但推荐方括号;索引从0开始,超出范围访问返回空值,不可赋值;处理多字节字符需用mb_substr。例如:$str="hello";echo$str[0];输出h;而中文等字符需用mb_substr($str,1,1)获取正确结果;实际应用中循环访问前应检查字符串长度,动态字符串需验证有效性,多语言项目建议统一使用多字节安全函数。

学习PHP:初学者指南 学习PHP:初学者指南 Jul 18, 2025 am 04:54 AM

易于效率,启动启动tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

See all articles