我有一个具有Composer依赖关系的应用程序,我想将其部署到Elastic Beanstalk容器.但是我的composer.json文件不在项目根文件夹中.我的项目root具有以下结构:
- .ebextensions
- scripts
- www (Webroot)
- composer.json
Run Code Online (Sandbox Code Playgroud)
我已在容器配置选项中将文档根目录设置为/ www.问题是我需要在盒子上安装composer并运行composer安装脚本来添加项目依赖项.据我所知,在部署期间,EB会检查项目根目录中是否有composer.json文件并安装Composer,但在这种情况下,我的composer.json文件位于子目录中.
我认为在部署应用程序后,可以使用.ebextenstions添加命令来安装Composer和依赖项.我使用以下容器命令创建了一个.ebextensions/01-composer.config文件:
container_commands:
01-install-composer:
command: "curl -sS https://getcomposer.org/installer | php"
02-install-packages:
command: "php composer.phar install"
cwd: "/var/app/current/www/"
Run Code Online (Sandbox Code Playgroud)
但是我的应用程序不会使用此配置进行部署.希望得到一些帮助,看看我哪里出错了.
谢谢.
amazon-ec2 amazon-web-services composer-php amazon-elastic-beanstalk
我们有一个Vagrant设置运行Ubuntu 12.04作为我们团队中的客户操作系统,主机操作系统是Windows 7或8.我希望能够获得Windows主机的主机名和在安装过程中将其附加到Vagrant主机名,例如
config.vm.hostname = <windows hostname>-web
Run Code Online (Sandbox Code Playgroud)
这是因为我们有几个开发人员从他们的本地开发机器连接到外部服务,如果我们都设置了相同的主机名(因为Vagrant文件是源控制的,并且每个人都一样),那么在这些外部服务的日志中我们可以区分谁向服务提出了什么要求.我想如果我们能够从主机操作系统动态获取主机名,那么识别在每台开发人员机器上运行的各个客户操作系统是一种好方法.
这是可能的,如果是这样,实现它的最佳方法是什么?
我正在使用AWS SDK for PHP,版本2.4.7通过composer安装.从S3存储桶删除文件后,即使文件实际已从S3中删除,响应对象中的DeleteMarker键也始终为空.文档说明如果操作成功则DeleteMarker应为true,否则为false.
我的删除电话是:
// delete S3 object
$result = $s3->deleteObject(array(
'Bucket' => $this->_bucket,
'Key' => $object_key,
));
Run Code Online (Sandbox Code Playgroud)
并且响应是:
Guzzle\Service\Resource\Model Object
(
[structure:protected] =>
[data:protected] => Array
(
[DeleteMarker] =>
[VersionId] =>
[RequestId] => 2CC3EC60C4294CB5
)
)
Run Code Online (Sandbox Code Playgroud)
如果我那么做:
// check if was deleted
$is_deleted = (bool) $result->get('DeleteMarker');
Run Code Online (Sandbox Code Playgroud)
$ is_deleted始终为false.如果删除操作实际上成功并且文件已从S3中删除,那么对于DeleteMarker键是否没有返回值?
更新:
如果我在我的键的开头添加一个斜杠,我会得到一个错误的回复,即使该文件仍然从S3中删除.
键"path/to/my/image.jpg"导致DeleteMarker具有空值Key"/path/to/my/image.jpg"导致DeleteMarker为空false
但在这两种情况下,图像都从S3存储桶中删除.
我在MySQL数据库中有一个供应商目录表,它有一个相关的供应商映射表.此表针对单个供应商映射以下标准:
仅用于背景信息,每个都具有存储在3个单独对应表中的值.可以由任何供应商提供的所有服务都列在服务表中,映射表捕获由单个供应商提供的服务.供应商可以提供多种服务,因此他们可以为他们提供的每项服务制作映射.同样适用于专业和标准.
我遇到困难的地方是搜索查询,用户可以在上述任何一个或全部三个标准中查询供应商列表.例如,他们可以搜索具有服务a,专业b和标准c的供应商.他们无法在服务,专业或标准上搜索多个值
我的映射表如下所示:
id int(11) unsigned NOT NULL
supplier_id int(11) unsigned NOT NULL
entity_type enum('KEY_SERVICE','STANDARD','SPECIALITY') NOT NULL
entity_id int(11) NOT NULL
Run Code Online (Sandbox Code Playgroud)
其中entity_type映射用于指示要映射的实体类型,entity_id用于指示单个实体.
我的查询如下:
SELECT DISTINCT supplier_mappings.supplier_id, suppliers.company_name
FROM supplier_mappings
JOIN suppliers ON suppliers.id = supplier_mappings.supplier_id
WHERE (supplier_mappings.entity_type = 'KEY_SERVICE' AND supplier_mappings.entity_id = '55')
AND (supplier_mappings.entity_type = 'SPECIALITY' AND supplier_mappings.entity_id = '218')
AND (supplier_mappings.entity_type = 'STANDARD' AND supplier_mappings.entity_id = '15');
Run Code Online (Sandbox Code Playgroud)
这应该返回所有具有id为55的密钥服务的供应商,id为218的专业和id为15的标准.但是它只返回一个空的结果集,即使我知道至少有一个供应商具有这些定义.它似乎与复合的AND子句有关,但无法弄清楚是什么.
如果有人有任何想法,会很感激吗?
我正在使用 dompdf 生成我想用各种不同公司品牌纸标记的字母。为此,我通过 css 获取背景图像。请参阅底部的示例图像。然后我设置适当的边距以适合我想写到空白区域的内容。但是,我只希望此信头仅显示在第一页上。目前它在每一页上重复。我的 css 看起来像:
<html>
<head>
<meta charset="utf-8">
<title>{$pdf.title}</title>
<style type="text/css">
@page {
size: A4;
margin:0;
padding: 0;
}
body {
padding: {$branding.page_margin_top}cm {$branding.page_margin_right}cm {$branding.page_margin_bottom}cm {$branding.page_margin_left}cm;
font-size: 7pt;
font-family: helvetica !important;
background-image: url('{$base_url}pd-direct.png');
background-position: center center;
background-repeat: no-repeat;
font-size: 10pt;
}
#postal-address {
margin: 0cm;
margin-left: {$branding.address_offset_left}cm;
margin-top: {$branding.address_offset_top}cm;
margin-bottom: {$branding.address_offset_bottom}cm;
font-size: 10pt;
}
#date {
font-weight: bold;
}
</style>
</head>
<body>
<div id="page-body">
<div id="content">
{if $pdf.postal_address}
<div id="postal-address">
{$pdf.postal_address|nl2br}
</div>
{/if}
{$pdf.main_body}
</div>
</div>
</body> …Run Code Online (Sandbox Code Playgroud) 我正在尝试从AWS PHP SDK初始化S3客户端.我的代码如下:
$credentials = new Credentials(self::KEY, self::SECRET);
$s3_client = new S3Client([
'version' => 'latest',
'region' => $region,
'credentials' => $credentials
]);
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
遇到PHP错误
严重程度:4096
消息:传递给Aws\Common\Client\AbstractClient :: __ construct()的参数1必须实现接口Aws\Common\Credentials\CredentialsInterface,给定的数组,在/ opt/showhouse/www/application/models/showhouse/common/services中调用第47行/aws/aws.php并定义了Filename:Client/AbstractClient.php
行号:73
我出错的任何想法?我使用的是通过Composer安装的最新版本的SDK.
我有dropzone设置并使用我的AWS S3帐户.但是,我希望能够在将文件发送到S3之前重命名该文件(例如,附加时间戳),以便上载与现有文件同名的文件不会被覆盖.我试图在发送事件中捕获这个并在此时更新文件名但没有成功:
this.on("sending", function(file) {
file.name = 'my-new-prefix-' + file.name;
});
Run Code Online (Sandbox Code Playgroud)
我出错的任何想法或为什么这不起作用?
amazon-s3 ×3
php ×3
amazon-ec2 ×1
aws-sdk ×1
composer-php ×1
css ×1
dompdf ×1
dropzone.js ×1
enums ×1
host ×1
html ×1
join ×1
jquery ×1
mysql ×1
puppet ×1
select ×1
sql ×1
vagrant ×1
vagrantfile ×1
virtualbox ×1