小编Ric*_*cky的帖子

使用VSCode和Docker调试PHP

我正在尝试使用VSCode调试在Docker上运行的PHP应用程序,但没有成功.

在过去,我能够使用运行WAMP Server的VSCode轻松调试我的PHP应用程序,但自从我开始使用Docker后,我无法进行调试工作.在线搜索了几个教程,在StackOverflow上检查了一些线程(例如:Docker和XDebug没有读取断点VSCode),但我仍然无法使其正常工作.

Dockerfile:

FROM php:7.1.8-apache

COPY /cms /srv/app/cms
COPY .docker/cms/vhosts/vhost.conf /etc/apache2/sites-available/cms.conf
COPY .docker/cms/vhosts/vhost-ssl.conf /etc/apache2/sites-available/cms-ssl.conf
COPY .docker/cms/vhosts/certificate.conf /etc/ssl/certs/certificate.conf
COPY .docker/cms/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

WORKDIR /srv/app/cms

RUN docker-php-ext-install mbstring pdo pdo_mysql
RUN pecl install xdebug 
RUN docker-php-ext-enable xdebug
RUN chown -R www-data:www-data /srv/app/cms
RUN openssl req -x509 -new -out /etc/ssl/certs/ssl-cert-cms.crt -config /etc/ssl/certs/certificate.conf
RUN a2ensite cms.conf
RUN a2ensite cms-ssl.conf
RUN a2enmod rewrite
RUN a2enmod ssl
Run Code Online (Sandbox Code Playgroud)

xdebug.ini

[xdebug]
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_connect_back=0
xdebug.remote_host='host.docker.internal'
xdebug.idekey='VSCODE'
xdebug.remote_autostart=1
Run Code Online (Sandbox Code Playgroud)

泊坞窗,compose.yml

version: '3.7'
services:
cms:
  build:
    context: . …
Run Code Online (Sandbox Code Playgroud)

php xdebug docker docker-compose visual-studio-code

18
推荐指数
2
解决办法
6960
查看次数

Laravel 5.6附加Route :: resource()参数

我想知道如何在不使用查询字符串的情况下向Laravel的Route Resource添加其他参数.

我创建了一个包含所有内置资源的控制器(CustomerController),然后添加了以下路由:

Route::resource('customers', 'CustomerController');
Run Code Online (Sandbox Code Playgroud)

我想要做的是在不创建自定义路由或使用查询字符串的情况下为一些默认资源添加其他参数.例如:

带可选参数(索引)的默认资源:

public function index($page = 0)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

所需网址:

http://www.example.com/customers
http://www.example.com/customers/{page}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下,但我得到一个未找到的异常(NotFoundHttpException):

Route::resource('customers', 'CustomerController')->parameters([
    'index' => 'page'
]);
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是这样,我该怎样才能完成它?

laravel laravel-routing laravel-5

7
推荐指数
1
解决办法
7742
查看次数

动态加载和播放HTML5视频

我正在尝试加载并播放HTML5视频onClick事件.但我无法做到这一点: - /

这是我的HTML5:

<div id="divVideo">
    <video id="video" controls width="560">
        <source id="mp4" type="video/mp4" />
    </video>
</div>

<div onclick="loadVideo('Muse-Animals.mp4');">play</div>
Run Code Online (Sandbox Code Playgroud)

这是我的JS:

function loadVideo(id)
{
    var video = document.getElementById('video');
    var mp4 = document.getElementById('mp4');

    mp4.src = "vidz/" + id;

    video.load();
    video.play();
}
Run Code Online (Sandbox Code Playgroud)

我检查了元素,它确实更新了视频标签属性,但没有加载或播放视频.

我究竟做错了什么?

javascript html5 html5-video

6
推荐指数
1
解决办法
4万
查看次数

TinyMCE file_picker_callback从默认浏览器文件选择中选择图像

我在项目中使用TinyMCE,希望用户使用默认的插入图像窗口选择图像并将其上传到服务器.

我想点击以下按钮:

在此输入图像描述

打开浏览器默认文件选择窗口并将所选图像添加到编辑器:

在此输入图像描述

我的代码到目前为止如下..

JS:

tinymce.init({
        selector: '#html-editor',
        language: 'pt_PT',
        plugins: [
            "bdesk_photo advlist autolink link image lists charmap preview hr anchor pagebreak",
            "searchreplace wordcount visualblocks visualchars code media nonbreaking",
            "table contextmenu directionality paste textcolor colorpicker imagetools"
        ],
        add_unload_trigger: false,
        toolbar: "styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media preview | forecolor backcolor table",
        image_advtab: true,

        file_picker_callback: function (callback, value, meta)
        {
            $('#html-editor input').click();

            //how to get selected image data …
Run Code Online (Sandbox Code Playgroud)

tinymce file-upload filechooser tinymce-4

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

Laravel:通过没有表格的AJAX将数据发送到控制器

我需要通过JS在按钮点击时将数据发送到Laravel控制器.我没有使用任何表单,因为数据是动态创建的.每次我尝试发送数据时,我都会收到内部服务器错误(500),但无法在控制器或laravel.log文件中捕获该异常.

这是我正在做的事情:

路线:

Route::post('section/saveContactItems', 'SectionController@saveContactItems');
Run Code Online (Sandbox Code Playgroud)

控制器:

public function saveContactItems($id, $type, $items, $languageID = "PT"){ ... }
Run Code Online (Sandbox Code Playgroud)

JS:

$('button').on("click", function (evt) {

    evt.preventDefault();

    var items = [];
    var id = $("#id").val();
    var languageID = $("#languageID").val();
    var data = { id: id, type: type, items: JSON.stringify(items), languageID: languageID };

    $.ajax({
        url: "/section/saveContactItems",
        type: "POST",
        data: data,
        cache: false,
        contentType: 'application/json; charset=utf-8',
        processData: false,
        success: function (response)
        {
            console.log(response);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我怎么能做到这一点?

更新:感谢@ ShaktiPhartiyal的回答(和@ Sanchit的帮助)我能够解决我的问题.如果其他人遇到类似的问题,在关注@ Shakti的回答后,我无法访问控制器中的数据.所以,我必须在将数据发送到服务器之前对其进行字符串化:

data: JSON.stringify(data),
Run Code Online (Sandbox Code Playgroud)

php ajax jquery laravel laravel-5

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

使用 Docker 和 WSL2 在 VSCode 中调试 PHP 时出现的问题

几年来,我一直在 Windows 中使用 VSCode + Docker,并且设法拥有一个完全正常工作的开发环境,没有任何问题。

最近我用 WSL2 设置了一个新的开发环境。将我所有的项目、库、CLI 等移动到 WSL,使用带有 WSL2 容器的 Docker Windows 和 Windows 上的 VSCode 远程连接到 WSL。一切都非常顺利,我喜欢我可以将一切分开的事实。

但是最近我遇到了一个我无法解决的问题,我失去了调试 PHP 文件的能力。我正在使用 VSCode 远程 WSL 扩展来处理 WSL 内的项目,但是当我尝试调试时,没有任何反应。

对于我使用的每个开发环境(Windows、MacOS 和 WSL),我的 VSCode 中都有树调试设置。除 WSL 外的所有工作。当我尝试使用 WSL 进行调试时,实际上什么也没发生,没有输出错误,没有调试控制台信息,什么都没有...

这是我的 VSCode 调试设置:

{
    "version": "0.2.0",
    "configurations": [{
            "name": "Listen for XDebug Win10",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true,
            "externalConsole": false,
            "pathMappings": {
                "/var/www/project-a/api": "\\\\wsl$\\Ubuntu\\home\\ubuntu\\PROJECTS\\project-a\\api",
            },
            "ignore": [
                "**/vendor/**/*.php"
            ]
        },
        {
            "name": "Listen for XDebug MacOS",
            "type": "php", …
Run Code Online (Sandbox Code Playgroud)

php docker visual-studio-code vscode-debugger wsl-2

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

使用jQuery AJAX和Handler(ashx)进行文件上传无法正常工作

我正在尝试使用jQuery AJAX和通用处理程序上传图像文件.但似乎文件没有传递给处理程序.提交后context.Request.Files[0];始终为null: - /

我究竟做错了什么?

HTML:

<form id="form1" runat="server" method="post" enctype="multipart/form-data">

    <input name="file" id="file" type="file" />
    <input id="save" name="submit" value="Submit" type="submit" />

</form>
Run Code Online (Sandbox Code Playgroud)

JS:

$().ready(function ()
{
    $('#file').change(function () 
    {
        sendFile(this.files[0]);
    });
});

function sendFile(file) 
{
    $.ajax({
        type: 'post',
        url: 'FileUpload.ashx',
        data: file,
        success: function () {
            // do something
        },
        xhrFields:
        {
            onprogress: function (progress) 
            {
                // calculate upload progress
                var percentage = Math.floor((progress.total / progress.totalSize) * 100);

                // log upload progress to console
                console.log('progress', percentage);

                if …
Run Code Online (Sandbox Code Playgroud)

c# asp.net ajax jquery generic-handler

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

禁用CentOS中的UseGCOverheadLimit

我需要在CentOS服务器中禁用GC Overhead限制.这样做的原因是暂时阻止java.lang.OutOfMemoryError: GC overhead limit exceeded例外.

但我在Linux + Java系统上是零,并且没有任何关于如何运行此命令行的线索: -XX:-UseGCOverheadLimit

java linux garbage-collection

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

Linq:选择每组的最新记录

我想使用 Linq 从 SQL Server 表中获取每个组的最新记录。

表示例:

原始数据

我想得到这个结果:

期望的结果

我的 Linq 查询为每个公司返回一条记录,但不返回最新的记录:

var query = from p in db.Payments
            where p.Status == false 
            && DateTime.Compare(DateTime.Now, p.NextPaymentDate.Value) == 1
            group p by p.CompanyID into op                                          
            select op.OrderByDescending(nd => nd.NextPaymentDate.Value).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?为什么 NextPaymentDate 的排序不正确?

!!更新!! 我的查询正在按预期工作。在分析了 @Gilang 和 @JonSkeet 评论后,我进行了进一步的测试,发现由于没有更新的列,我没有得到预期的结果。

linq entity-framework-6

4
推荐指数
1
解决办法
5664
查看次数

使用通用 JSON 对象的 .NET Core Web API 和 MongoDB 驱动程序

我正在创建一个 ASP.NET Web API 来在 MongoDB 数据库中执行 CRUD 操作。我已经能够根据以下 Microsoft 教程创建一个简单的应用程序:使用 ASP.NET Core 和 MongoDB 创建 Web API

本教程和我发现的其他教程一样,都使用定义的数据模型(在上面的教程中是 Book 模型)。就我而言,我需要使用通用 JSON 对象执行 CRUD 操作。例如,JSON 对象可能是以下任意示例:

示例#1:

{_id: 1, name: 'Jon Snow', address: 'Castle Black', hobbies: 'Killing White Walkers'}
Run Code Online (Sandbox Code Playgroud)

示例#2:

{_id: 2, name: 'Daenerys Targaryen', family: 'House Targaryen', titles: ['Queen of Meereen', 'Khaleesi of the Great Grass Sea', 'Mother of Dragons', 'The Unburnt', 'Breaker of Chains', 'Queen of the Andals and the First Men', 'Protector of the Seven …
Run Code Online (Sandbox Code Playgroud)

c# mongodb-.net-driver asp.net-core-webapi

4
推荐指数
1
解决办法
8509
查看次数

如何终止递归函数并返回值

我正在尝试使用递归函数在ASP.NET页面中找到TextBox控件.找到此控件后,我想终止该函数并将其返回.

我的主要问题是我无法停止递归函数并返回控件.

这是我的代码:

//execute recursive function to find a control in page by its id
TextBox textbox = GetTextBoxByID(controlCollection, id);

//recursive function
private TextBox GetTextBoxByID(ControlCollection controlCollection, string id)
{
    foreach (Control control in controlCollection)
    {
        if (control is TextBox)
        {
            TextBox tb = (TextBox)control;

            if (tb.ID == id)
            {
                //return selected texbox and terminate this recursion
                return tb;
            }
        }

        if (control.HasControls())
        {
            GetTextBoxByID(control.Controls, id);
        }
    }

    //no control found return null
    return null;
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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

Laravel 5.6 Passport OAuth Max登录尝试

我刚刚使用Laravel Passport创建了一个简单的OAuth系统。该系统将负责外部应用程序用户的注册和身份验证。一切都按我的预期进行,现在我想实现一种机制,以在预定义次数的失败登录尝试后锁定用户。

我是Laravel和Passport的新手,是否有任何内置的软件包可以为我管理?还是我必须自己开发此功能?如果是这样,我该如何完成这项任务?

我一直在搜索整个互联网,但是直到现在我都找不到关于Passport OAuth的任何信息。

php mysql laravel laravel-5 laravel-passport

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