小编Bin*_*ntz的帖子

带有 Laravel 应用程序的自包含 Docker 映像(无共享卷)

网络上至少有十几个关于如何使用 Docker 设置 Laravel 应用程序的教程。他们都使用的基本设置是 3 个 Docker 容器:

  • nginx容器
  • php-fpm 容器
  • mysql 容器

Nginx 和 PHP-fpm 容器依赖于共享卷。HTTP 请求进入 Nginx 以获取共享卷上的文件。Nginx 将请求交给 PHP-fpm。Php-fpm 还可以访问共享卷中的文件,因此它可以运行脚本。

对于开发来说,这太棒了。我可以编辑共享卷中的文件并立即测试更改。但我在质疑我是否希望将其用于生产。我真的希望我的任何代码都在运行 Docker 的服务器上吗?这似乎首先违背了 Dockerising 的一些目的。似乎我希望代码在运行 nginx 和 PHP-fpm 的 Docker 容器中自包含(数据库可以是托管环境中的单独容器或服务)。

我的想法在这里正确吗?在 Docker 中部署 Laravel 进行生产的最佳实践是什么?

php nginx laravel docker

10
推荐指数
1
解决办法
485
查看次数

Webdriver.io - 很可能无法加载规范文件,因为它们依赖于“浏览器”对象

我正在使用 Webdriver.io 在大量页面上运行测试。因为页面的所有规范都在 JSON 文件中,所以我有一个特殊的类来设置测试。它看起来像这样:

module.exports = class PageTester {
    suiteName = '';
    browser = {};

    constructor (suiteName, browser) {
        this.suiteName = suiteName;
        this.browser = browser;
    }

    testModel(currentModel) {

        describe(this.suiteName + ' endpoint ' + currentModel.url, () => {
            this.browser.url(currentModel.url);
    
            /* it() statements for the test */

        });
    }        
}
Run Code Online (Sandbox Code Playgroud)

然后,在我的规范文件夹中,我有一个加载 JSON 并将其插入 PageTester 类的文件,如下所示:

const PageTester = require('../modules/PageTester');

const models = require('/path/to/some/file.json');
const pageTester = new PageTester('Some Name', browser);

for (const modelName in models) {
    pageTester.testModel(models[modelName]);
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,WebdriverIO 会给出以下警告: …

javascript selenium webdriver mocha.js webdriver-io

7
推荐指数
2
解决办法
3万
查看次数

-bash:意外令牌附近的语法错误`)'

我可能遗漏了一些非常基本的东西.我有一个Web脚本,告诉shell脚本更新一些数据库记录.这些记录用于统计信息,这样Web脚本就不必在更新数据库记录时等待.但是,我实际上无法让shell脚本从命令行运行它.这是我正在尝试的代码:

perl async_sql.pl 'UPDATE some_table set i = i + 1 WHERE (n in (\'328430\',\'334969\',\'330179\',\'335290\',\'335285\',\'335284\',\'335264\',\'335145\',\'335146\',\'335147\',\'335148\',\'335149\',\'335230\',\'335201\',\'335198\',\'335196\',\'335167\',\'335151\',\'335152\',\'335143\',\'334969\',\'334972\',\'334977\',\'334978\',\'334979\',\'334980\',\'334982\',\'334983\',\'334984\',\'334934\',\'334947\',\'334948\',\'334950\',\'334992\',\'335014\',\'335026\',\'335030\',\'335032\',\'334864\',\'334862\',\'334861\',\'334858\',\'334855\',\'334852\',\'334850\',\'334849\',\'334848\',\'334847\',\'334844\',\'334842\'))'
Run Code Online (Sandbox Code Playgroud)

巴什告诉我:

-bash:意外令牌附近的语法错误`)'

我错过了什么?

bash shell

5
推荐指数
1
解决办法
2万
查看次数

mod_rewrite: Rewrite URL to point to cgi script, but keep rewrite hidden

I'm trying to rewrite the URL

http://domain.com/whatever 
Run Code Online (Sandbox Code Playgroud)

To:

http://domain.com/cgi-bin/script.cgi
Run Code Online (Sandbox Code Playgroud)

My .htaccess file looks like this:

RewriteEngine On
RewriteRule /whatever /cgi-bin/script.cgi [NC]
Run Code Online (Sandbox Code Playgroud)

This doesn't work and gives me a 404 error. However, this works:

RewriteEngine On
RewriteRule /whatever http://domain.com/cgi-bin/script.cgi [NC]
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,URL 更改对用户来说是可见的。我究竟做错了什么?

apache .htaccess mod-rewrite url-rewriting

3
推荐指数
1
解决办法
2647
查看次数

使用paypal.com的Perl,LWP"证书验证失败"

不是100%肯定这是一个Perl问题,但似乎是.我有一个与PayPal连接的IPN脚本来验证交易.它工作正常,直到昨天,我安装了LWP :: Protocol :: https.从那时起,它一直没有出现错误:

Can't connect to www.paypal.com:443 (certificate verify failed)

LWP::Protocol::https::Socket: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/local/share/perl5/LWP/Protocol/http.pm line 47.
Run Code Online (Sandbox Code Playgroud)

运行GET https://www.paypal.com从bash中(使用LWP)产生相同的错误消息.OTOH,跑步GET https://www.gmail.com成功.运行openssl s_client -host paypal.com -port 443返回(以及其他内容)Verify return code: 0 (ok).curl "https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate"成功收到PayPal的回复.所以它似乎确实是Perl特有的.

模块版本:

LWP 6.13
LWP::Protocol::https 6.06
IO::Socket::SSL 2.015
Mozilla::CA 20141217 (note: I've tried the script both using Mozilla::CA and without it... results have been the same)
Run Code Online (Sandbox Code Playgroud)

如果有其他相关模块,请告诉我.Perl版本是5.10.1.服务器操作系统是RHEL 6.

perl ssl paypal lwp lwp-useragent

2
推荐指数
1
解决办法
1673
查看次数

php preg_replace使用捕获的组作为数组索引

看起来这应该是直截了当但以下代码不起作用:

$text = preg_replace('/test([0-9]+)/i', $array["$1"], $text);
Run Code Online (Sandbox Code Playgroud)

该代码是应该找到,如"test1的","TEST2","TEST3"等在文本的所有实例,并用$阵列[1]的值替换,$阵列[2],$阵列[3],等等

我究竟做错了什么?

php regex arrays

2
推荐指数
1
解决办法
886
查看次数