- 支付宝当面付
- 支付宝PC支付
- 支付宝手机支付
- payjs微信扫码.
- Paysapi(支付宝/微信).
- 码支付(QQ/支付宝/微信)
- 微信企业扫码支付
- Paypal支付(默认美元)
- V免签支付
- 全网易支付支持(通用彩虹版)
- stripe
- (PHP + PHPCLI) version = 7.4
- Nginx version >= 1.16
- MYSQL version >= 5.6
- Redis (高性能缓存服务)
- Supervisor (一个python编写的进程管理服务)
- Composer (PHP包管理器)
- Linux (Win下未测试,建议直接Linux)
星号(*)为必须执行的要求,其他为建议内容
- *安装
fileinfo
扩展 - *安装
redis
扩展 - *终端需支持
php-cli
,测试php -v
(版本必须一致) - *需要开启的函数:
putenv
,proc_open
,pcntl_signal
,pcntl_alarm
- 安装
opcache
扩展
- 后台路径
/admin
- 默认管理员账号
admin
- 默认管理员密码
admin
1
2
3
| false`
`正式上线后一定要将.env配置里面的APP_DEBUG设置为false`
`正式上线后一定要将.env配置里面的APP_DEBUG设置为false
|
请根据自己的linux发行版本替换命令。
本教程默认你已经掌握linux基本知识和操作。
本教程默认你已经安装好了所有基本环境要求
- 下载项目代码 使用git下载:
1
2
3
| yum install git
git clone https://github.com/assimon/dujiaoka.git
|
- 如不使用git下载,也可以下载代码发行包手动上传至网站目录
发行版本下载:https://github.com/assimon/dujiaoka/releases.
在终端下执行命令:
正确返回类似以下:
1
2
3
4
5
| PHP 7.3.16-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 20 2020 13:51:21) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.16-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.9.3, Copyright (c) 2002-2020, by Derick Rethans
|
确保你的终端环境支持php-cli
确保你的php环境没有禁用
以下函数:
1
2
3
4
| putenv
proc_open
pcntl_signal
pcntl_alarm
|
否则会导致composer或php artisan命令无法正确执行!
在网站根目录下执行: 修改为你自己的配置信息
wq
保存
请确保.env
里面的配置能够正确连接上mysql和redis
根目录下执行:
1
2
3
| location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}
|
设置网站运行目录为/public
,根据自身实际目录配置
1
| root /www/wwwroot/dujiaoka/public;
|
参考资料:使用 Supervisor 管理 Laravel 队列进程.
登录提示的 https://ka.testxxx.com/admin/ 输入正确的用户名 和密码 但报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Mixed Content: The page at 'https://ka.testxxx.com/admin/auth/login' was loaded over a secure connection, but contains a form that targets an insecure endpoint 'http://ka.testxxx.com/admin/auth/login'. This endpoint should be made available over a secure connection.
VM135:1 Mixed Content: The page at 'https://ka.testxxx.com/admin/auth/login' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://ka.testxxx.com/admin/auth/login'. This request has been blocked; the content must be served over HTTPS.
grep -r "auth/login" .
./storage/framework/views/4ebc5d229a4d750eddf8b1d24449a7c155fe4dcf.php: <form id="login-form" method="POST" action="<?php echo e(admin_url('auth/login'), false); ?>">
./storage/framework/sessions/IiJirdb6xF7CyebJJyHkxbtWc61ARNQaIu2xGGQt🅰️5:{s:6:"_token";s:40:"ZR3fSz0ov0aexrulSeM6XP5bjwuRHPCN26s7gs5U";s:3:"url";a:1:{s:8:"intended";s:25:"https://ka.testxxx.com/admin";}s:9:"_previous";a:1:{s:3:"url";s:36:"https://ka.testxxx.com/admin/auth/login";}s:6:"_flash";a:2:{s:3:"old";a:1:{i:0;s:14:"admin.prev.url";}s:3:"new";a:0:{}}s:5:"admin";a:1:{s:4:"prev";a:1:{s:3:"url";s:36:"https://ka.testxxx.com/admin/auth/login";}}}
./config/admin.php: 'auth/login',
./config/admin.php: 'auth/login',
./vendor/dcat/laravel-admin/tests/resources/config/admin.php: 'auth/login',
./vendor/dcat/laravel-admin/tests/resources/config/admin.php: 'auth/login',
./vendor/dcat/laravel-admin/tests/Browser/Cases/AuthTest.php: $browser->visit(admin_base_path('auth/login'))
./vendor/dcat/laravel-admin/tests/Browser/Cases/AuthTest.php: ->assertPathIs(admin_base_path(auth/login'))
./vendor/dcat/laravel-admin/tests/Browser/Cases/AuthTest.php: $browser->visit(admin_base_path('auth/login'))
./vendor/dcat/laravel-admin/tests/Browser/Cases/AuthTest.php: ->assertPathIs(admin_base_path(auth/login'))
./vendor/dcat/laravel-admin/tests/Browser/Cases/AuthTest.php: ->assertPathIs(admin_base_path(auth/login'))
./vendor/dcat/laravel-admin/resources/views/pages/login.blade.php: <form id="login-form" method="POST" action="{{ admin_url('auth/login') }}">
./vendor/dcat/laravel-admin/config/admin.php: 'auth/login',
./vendor/dcat/laravel-admin/config/admin.php: 'auth/login',
./vendor/dcat/laravel-admin/src/Admin.php: $router->get('auth/login', $authController.'@getLogin');
./vendor/dcat/laravel-admin/src/Admin.php: $router->post('auth/login', $authController.'@postLogin');
./vendor/dcat/laravel-admin/src/Console/stubs/config.stub: 'auth/login',
./vendor/dcat/laravel-admin/src/Console/stubs/config.stub: 'auth/login',
./vendor/dcat/laravel-admin/src/Http/Middleware/Authenticate.php: $loginPage = admin_base_path('auth/login');
./vendor/dcat/laravel-admin/src/Http/Controllers/AuthController.php: $path = admin_url('auth/login');
|
从你提供的代码来看,登录表单的action
属性被设置为: admin_url('auth/login')
。 admin_url
函数可能由于某种原因在生成URL时没有考虑到站点的协议,从而生成了混合内容(Mixed Content)错误。
在这种情况下,修改一下admin_url
函数的实现或者在调用时强制生成https协议的链接可能会有所帮助。
例如,如果你在Laravel应用中使用了url
or asset
帮助函数来生成URL,你可以强制他们生成https url,只需要在AppServiceProvider的boot方法中添加一个对应的schema就可以了:
php
1
2
3
4
| public function boot()
{
\URL::forceScheme('https');
}
|
上述代码会强制所有自动生成的URL使用https。
此外,请确认你的Laravel环境配置文件 .env
中的 APP_URL
设置为以https开头的URL。
然后尝试一下,看问题是否解决,并欢迎提供进一步的信息是我们能更好的帮助到你。
具体改上面的哪个文件呢。
你需要修改的文件是 AppServiceProvider.php
,这个文件通常位于你的 Laravel 项目的 app/Providers
目录下。以下是具体的步骤:
- 打开
app/Providers/AppServiceProvider.php
文件。 - 在这个文件中,你会看到一个叫做
boot
的方法。在这个方法里,你需要添加 \URL::forceScheme('https');
这行代码。修改后像下面这样:
php
1
2
3
4
| public function boot()
{
\URL::forceScheme('https');
}
|
- 保存并关闭文件。
记得在进行任何修改之前备份你的原始文件以防任何可能发生的错误。重启你的 Laravel 应用查看是否解决了问题。
另外,确保你的 .env
文件的 APP_URL
设置为https协议,例如:APP_URL=https://ka.testxxx.com
。.env
文件通常位于你的 Laravel 项目的根目录下。你可以用任何文本编辑器打开并修改它。记得保存你的修改。
上述改动后,函数 admin_url('auth/login')
生成的 URL 就应该是以 https
开头的了,这样应该可以解决浏览器报告的混合内容错误。
vim app/Providers/AppServiceProvider.php 改了 要重新composer install吗
更改了 AppServiceProvider.php
后,无需重新运行 composer install
。composer install
是用来安装项目的依赖的,你只是修改了你的服务提供者,不需要重新安装依赖。
但是,你可能需要清除并重生成配置缓存。你可以使用下面的Artisan命令来完成:
1
2
| php artisan config:clear
php artisan config:cache
|
如果你的应用在生产模式,你也可能需要重启服务器或者重启PHP服务,这取决于你使用的是哪种服务器。对于Apache,你可以使用 sudo service apache2 restart
,对于Nginx,你可以使用 sudo service nginx restart
,对于PHP-FPM,可以使用 sudo service php7.4-fpm restart
(也可能是php7.2-fpm或其他版本,取决于你的PHP版本)。
此外,如果你的网站是被浏览器持续访问的,那么浏览器可能缓存了一些内容。清除浏览器的缓存,然后重试登录,看看是否解决了这个问题。
改了后 /** * Bootstrap any application services. * * @return void */ public function boot() { \URL::forceScheme(‘https’); } }
还是一样问题
看起来你的Laravel应用仍然生成了"http"的URL。这可能是因为你的服务器配置或者你使用的是代理服务器或负载均衡器,并不直接与用户建立HTTPS连接。
在这种情况下,尽管你的用户通过HTTPS访问你的站点,但Laravel可能会认为他们是通过HTTP访问的,因为它只看到与它直接相连的服务器或负载均衡的连接,而此处的连接可能是HTTP。
要解决此问题,你可能需要告诉Laravel信任你的代理服务器。你可以在 App\Http\Middleware\TrustProxies
中间件中配置它:
在 TrustProxies.php
文件中,$proxies
属性用来设置信任的代理服务器地址,将其修改为 '*'
以信任所有代理服。同时,$headers
属性用来设置接受的请求头,将其修改为 Request::HEADER_X_FORWARDED_AWS_ELB
或 Request::HEADER_X_FORWARDED_ALL
以接受所有代理头。
一个修改后的 TrustProxies.php
文件可能看起来像这样:
php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string|null
*/
protected $proxies = '*'; // Trust all proxies
/**
* The current proxy header mappings.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL; // Accept all proxy headers
}
|
保存文件并重载服务器后,再尝试访问看是否问题解决。再次注意,备份所有在修改之前的文件以防万一,同时在修改之后务必清除配置缓存,以确保新的设置生效。这样的设置会让 Laravel 信任所有的代理,并且接受所有通过代理传递的请求头。这应该让 Laravel 理解用户的请求是通过HTTPS完成的,即使和Laravel直连的部分是HTTP连接。
修改完成后记得保存文件,并重启你的 Laravel 服务器以使新的配置生效。你也需要清空 Laravel 的配置缓存,可以通过执行 php artisan config:cache
命令完成。
最后再次测试登录,看这个修改是否解决了你的问题。
还是一样的问题
看起来问题还在,那么你可能需要在LoginController或者提交登陆表单的路由中明确使用HTTPS协议。
首先,我们来检查 config/admin.php
文件中的 'https'
参数是否设为 true
。如果没有找到 'https'
参数,通过手动添加这个参数即可:
php
1
2
3
4
5
6
7
8
9
10
11
| 'route' => [
'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'),
'namespace' => 'Admin',
'middleware' => ['web', 'admin'],
//=>> 从这里开始添加 <<==//
'https' => env('ADMIN_HTTPS', false),
],
|
然后在 .env
文件中设置 ADMIN_HTTPS=true
。完成后清除配置缓存,可以通过执行 php artisan config:cache
命令完成。
问题解决。
如果以上方案还没有解决问题,你可以在你的登录页面的 form 标签中明确指定 action 属性的值为HTTPS URL,由于你在使用 Dcat Admin,你可能需要修改 vendor/dcat/laravel-admin/resources/views/pages/login.blade.php
文件,找到 form 标签并修改 action 属性的值为HTTPS URL:
php
1
| <form id="login-form" method="POST" action="{{ secure_admin_url('auth/login') }}">
|
请注意,secure_admin_url()
是我用作演示的函数,你可能需要自己创建这个函数或者用其他方式生成HTTPS
高级篇:配置 商品列别 商品 卡密,配置 支付宝当面付,修改pay页面的信息,配置 邮件服务信息