pip3 install 时出现错误,最后一行信息为 locale.Error: unsupported locale setting
,解决办法是,在终端输入 export LC_ALL=C
即可。
apache启用ssl安全访问
首先申请 ssl证书,可以在 腾讯云 或 阿里云 或 利用Let’s Encrypt创建 。这里以 腾讯云 为例。
- 启用 ssl 模块
sudo a2enmod ssl
- 将得到的证书文件放到确定的目录,如统一放在
/etc/apache2/ssl
。 - 就地复制
default-ssl.conf
,然后修改新文件中的 域名,DocumentRoot,证书路径,如:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName domain.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/domain.com-ssl-error.log
CustomLog ${APACHE_LOG_DIR}/domain.com-ssl-access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/2_domain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/3_domain.com.key
SSLCertificateChainFile /etc/apache2/ssl/1_root_bundle.crt
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
- 修改站点根目录下
.htaccess
文件,添加以下代码,实现 http 自动跳转到 https:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>
使用vim时有乱码的解决办法
使用 阿里云ECS 或者 VPS 时,因为安装的系统是 英文版linux,所以vim默认中文件显示乱码,解决办法是:编辑 /etc/vim/vimrc
或 ~/.vimrc
,添加以下代码:
set fileencodings=utf-8,gbk,utf-16le,cp1252,iso-8859-15,ucs-bom
set termencoding=utf-8
set encoding=utf-8
vmware中添加共享目录
右击“我的电脑”,“映射网络驱动器”,输入以下内空:
\vmware-host\Shared Folders\共享目录名
linux中安装xmind8并设置默认打开方式
- 下载最新版的 xmind8 ,文件是 zip 格式,解压放到任一目录(我习惯放在
~/bin
)。 -
运行需要 jre 环境,安装:
sudo apt install openjdk-8-jre
(不同系统可能不一样,如果有多个版本可以选择高版本)。 -
运行时出现
发生了错误。请参阅日志文件
,打开提示中的日志文件,发现有一行Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy cannot be found by org.eclipse.e4.core.di_1.6.0.v20160319-0612
,是因为缺少组件。但是其实组件已经安装了,使用以下方法解决:打开运行目录XMind_amd64
,打开XMind.ini
,文件最后添加一行--add-modules=ALL-SYSTEM
。 -
添加启动器
1. 在
XMind_amd64
目录中,添加文件XMind.sh
,添加以下内容(注意目录路径要和自己的实际情况一致):cd ~/bin/xmind-8-update7-linux/XMind_amd64
./XMind $*添加运行权限。
- 在目录
/usr/share/applications
(或者~/.local/share/applications
,此目录仅当前用户可见) 添加文件xmind.desktop
,添加以下内容:[Desktop Entry] Name=XMind Exec="~/bin/xmind-8-update7-linux/XMind_amd64/XMind.sh" %F Comment= Terminal=false Icon=xmind Type=Application Categories=GTK;GNOME;Office;
无需添加运行权限。
- 在目录
-
通过文件直接打开(以 mint 为例):右键
.xmind
文件,选择“属性”->“打开方式”,选择“XMind”,点击“设为默认”。这步操作不建议设置。xmind文件实际上是一个压缩包,如果默认使用xmind打开,所有压缩包都会如此,反而增加麻烦。建议添加到打开方式列表就行。
- Exec 属性结尾添加
%F
可以让启动器显示在“打开方式”列表中。 - Categories 常见类型:
- Development
- Office
可同时有多个,用英文分号;
隔开
laravel 中怎样在 request 类中使用 sometimes 验证
public function withValidator($validator)
{
// 有企业ID时必须是企业身份
$validator->sometimes('group', 'in:1', function ($input) {
return $input->company_id;
});
// 没有企业ID时必须是管理员身份(管理员必须没有企业ID)
$validator->sometimes('group', 'in:2', function ($input) {
return !$input->company_id;
});
}
Laravel 验证规则中的 exists 和 unique 应该怎么使用
exists:table,column
验证字段的值是否存在于数据库指定表的指定列中,如果不存在将会抛出异常,这里是关于 exists 规则的 详细说明。
基本用法
验证 users 表中是否存在 email 等于指定的 email 值的记录
'email' => 'exists:users'
Rule::exists('users')
自定义列名
验证 users 表的 email_address
'email' => 'exists:users,email_address'
Rule::exists('users','email_address')
自定义数据库连接
验证指定数据库连接的 users 表
'email' => 'exists:connection.users,email'
附加 WHERE 条件(可以有多个)
除了验证 email_address 还需要验证 role 等于 admin
'email' => 'exists:users,email_address,role,admin'
Rule::exists('users','email_address')->where('role','admin')
! 表示不等于
'email' => 'exists:users,email_address,role,!admin'
Rule::exists('users','email_address')->whereNot('role','admin')
NULL 在 MySQL 中是通过 IS 判断的,这里注意不用 IS
'email' => 'exists:users,email,deleted_at,NULL'
Rule::exists('users','email_address')->whereNull('deleted_at')
对不等于 NULL 的情况不能使用 !,而是使用 NOT_NULL
'email' => 'exists:users,email,deleted_at,NOT_NULL'
Rule::exists('users','email_address')->whereNotNull('deleted_at')
unique:table,column,except,idColumn
验证字段的值在数据库指定表的指定列中是否唯一,如果不唯一将会抛出异常,这里是关于 unique 规则的 详细说明
基本用法
验证指定的 email 值在 users 表的 email 中是否唯一
'email' => 'unique:users '
Rule::unique('users')
自定义列名
验证 users 表的 email_address
'email' => 'unique:users,email_address'
Rule::unique('users','email_address')
自定义数据库连接
验证指定数据库连接的 users 表
'email' => 'unique:connection.users,email_address'
排除某条记录
排除 users 表中 id 等于 $userId 的记录,使用场景是用户修改 email 时,需要验证自身除外的其他用户是否已使用了该 email
'email' => 'unique:users,email_address,'.$userId
Rule::unique('users','email_address')->ignore($userId)
排除时指定 primary_key
排除 users 表中 user_id 等于 $userId 的记录
'email' => 'unique:users,email_address,'.$userId.',user_id'
Rule::unique('users','email_address')->ignore($userId,'user_id')
附加 WHERE 条件(和 exists 的 WHERE 条件相同)
由于排除是在 WHERE 条件之前的,如果指定了 WHERE 条件,但是没有指定排除,需要把第三个参数设为 NULL
'email' => 'unique:users,email_address,NULL,id,role,admin'
Rule::unique('users','email_address')->where($role,'admin')
在Ubuntu 18.04上安装MySQL
使用 apt 或 tasksel 安装完 mysql-server 之后,默认无法登录,需要进行配置。
- 使用命令
mysql_secure_installation
并按提示操作,之后重启服务。 - 使用
sudo mysql -u root -p
登录,密码为空,或上一步设置的密码。 - 运行以下SQL:
update mysql.user set plugin='mysql_native_password', authentication_string=password('root') where User='root';
,退出,重启服务。
新密码是 root
。
mysql 8.0 无法登录的解决办法:
- 更改加密方式:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
- 更改密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
- 刷新:
mysql> FLUSH PRIVILEGES;
phpmyadmin – count(): Parameter must be an array or an object that implements Countable
Edit file ‘/usr/share/phpmyadmin/libraries/sql.lib.php’ Replace: (count($analyzed_sql_results['select_expr'] == 1)
With:(count($analyzed_sql_results['select_expr']) == 1
Laravel 5.4: Specified key was too long error
Laravel 5.4 made a change to the default database character set, and it’s now utf8mb4
which includes support for storing emojis. This only affects new applications and as long as you are running MySQL v5.7.7 and higher you do not need to do anything.
For those running MariaDB or older versions of MySQL you may hit this error when trying to run migrations:
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter tableusers
add uniqueusers_email_unique
([PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
As outlined in the Migrations guide to fix this all you have to do is edit your AppServiceProvider.php
file and inside the boot
method set a default string length:
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
After that everything should work as normal. If you enjoyed this post be sure and join the weekly Laravel newsletter and never miss out on new releases, framework tips, and new tutorials.