原创
2019年11月07日 21:40
  • 羽由
  • 羽由小说
  • 2079
  • 4
  • 0

“哥,我再也不跑了。”


心早已成了碎片,无法拼起。


藤枯了,花谢了,我也苍老了。颤颤巍巍的走在喧嚣的街道上,没人认识我,也许根本就没有人能看得清我的面孔。秋风尽惹寂寥,最后一次给我送来了清晰的过往。


“滚!你给我滚,滚得越远越好!”母亲愤怒到极点了,眼神中全没了我往日的乖巧,说完就抄起粗大的樟树棒开始打我。


我完全吓傻了,再也没跑,只是让那沉重沉重的棍棒一棍一棍的敲打着我的脊梁。

原创
2022年12月20日 16:45
  • 翟码农
  • php
  • 144
  • 1
  • 0

php框架里,有很多类文件。这些文件的引入,就需要借助自动加载函数来实现。

spl_autoload_register函数相当于__autoload的升级版,我们先来看看__autoload函数的用法。


1. __autoload的用法

我写了两个文件start.php、zhai.php

//start.php
function __autoload($class){
    require_once(strtolower($class).".php");
}

$obj = new Zhai();
$obj->sayHello();


由于Zhai这个类没有声明过,当程序执行到new时,就会自动先触发__autoload函数,来引入相关文件:

//zhai.php
class Zhai
{
    public function sayHello(){
        echo "hello
"; } }

上面只是最简单的一种情况。我们知道一个框架里少不了会有各种目录,我们现在也添加加目录试试。
我先添加了一个lib目录,并在其中也新建了zhai.php文件。

文件目录结构如下所示:
原创
2022年12月16日 18:03
  • 翟码农
  • php
  • 132
  • 2
  • 0

1.服务器报错

在服务器里,通过php -m命令可以查看到gd这个模块,可是程序里用到imagecreatefromjpeg函数还是报错,如下所示:



这是因为gd扩展,没有安装jpeg这部分。


2. gd安装缺乏jpeg的图示

通过phpinfo查看,gd扩展部分的信息如下图所示:


可以看到gif、png、bmp,却就是看不到jpeg。


3. 重新编译gd扩展

网上这个时候都会让你下载jpeg的源码包,然后再进行编译安装。

本人经过实践,在php8.0版本下,不用另外下载源码包。


进入php源码包的ext/gd目录,本人实践目录如下所示:

/opt/php-8.0.23/ext/gd


然后开始重新编译gd扩展,依次执行如下命令:

/usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config --enable-gd --with-jpeg --with-freetype
make && make install

由于本人服务器有安装多版本php,所以执行phpize命令用的绝对路径,否则编译版本信息容易匹配不上。

原创
2022年09月30日 11:39
  • 翟码农
  • php
  • 434
  • 0
  • 0

今天在thinkphp6框架里连接mongodb,报authentication fail错误,如下图所示:



修改框架底层文件

网上查到的解决方法如下,但是对我无效:

 //文件位置:/vendor/topthink/think-orm/src/db/connector/Mongo.php
if (empty($config['dsn'])) {
       $config['dsn'] = 'mongodb://' . ($config['username'] ? "{$config['username']}" : '') . ($config['password'] ? ":{$config['password']}/" : '') . $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : '');
       $config['dsn'] .= ($config['database'] ? "/{$config['database']}" : '');  //添加此行代码
}

修改之前打印出来的连接地址格式如下(非真实地址,仅供参考格式):

原创
2022年09月08日 18:37
  • 翟码农
  • mysql
  • 400
  • 0
  • 0
经过验证,我把数据库账号发给了同事,结果同事连不上数据库。

报如下错误:
1251-Client does not support authentication protocol requested by server. consider upgrading MySQL client.

英文稍微好点儿, 就大概知道是啥问题了。consider upgrading MySQL client,意思是建议考虑升级mysql客户端版本号。

根本原因是因为我安装了8.0版本的MySQL,密码加密方式发生了变化。而低版本的navicat客户端不支持,所以升级下客户端就好了。
原创
2022年09月07日 20:08
  • 翟码农
  • php
  • 268
  • 0
  • 0

今天在Centos7.6系统下编译安装php8.0,报如下错误:

ext/mbstring/.libs/mbstring.o: In function `_php_mb_match_regex':
/root/php-7.4.26/ext/mbstring/mbstring.c:1027: undefined reference to `onig_new_match_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1029: undefined reference to `onig_initialize_match_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1031: undefined reference to `onig_set_match_stack_limit_size_of_match_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1034: undefined reference to `onig_set_retry_limit_in_match_of_match_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1037: undefined reference to `onig_search_with_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1040: undefined reference to `onig_free_match_param'
ext/mbstring/.libs/php_mbregex.o: In function `zif_mb_ereg_match':
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1401: undefined reference to `onig_new_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1402: undefined reference to `onig_initialize_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1410: undefined reference to `onig_match_with_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1411: undefined reference to `onig_free_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1407: undefined reference to `onig_set_retry_limit_in_match_of_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1404: undefined reference to `onig_set_match_stack_limit_size_of_match_param'
ext/mbstring/.libs/php_mbregex.o: In function `_php_mb_onig_search':
/root/php-7.4.26/ext/mbstring/php_mbregex.c:873: undefined reference to `onig_new_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:875: undefined reference to `onig_initialize_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:877: undefined reference to `onig_set_match_stack_limit_size_of_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:880: undefined reference to `onig_set_retry_limit_in_match_of_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:883: undefined reference to `onig_search_with_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:884: undefined reference to `onig_free_match_param'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] 错误 1
原创
2022年08月05日 09:11
  • 翟码农
  • php
  • 262
  • 0
  • 0

在数学中,我们知道当a=b,b=c时,可以得出a=c的结论。


但是PHP中,等于分为==和===这两种。
针对==这一种,在a==b,b==c的前提下,是不能一定得出a=c的结论的。


示例:


示例输出结果是”I love 0“而不是”I love 1“,即a变量不等于(!=)c变量。


原创
2022年07月08日 10:29
  • 翟码农
  • 英语笔记
  • 336
  • 1
  • 0
备考英语笔译3级考试。

文章乃为本人学习翻译的成果,仅供参考。

Brad Hooper quit his previous job at a grocery in Madison because his boss was "a little crazy". The manager threatened to sack him and other cashiers for refusing orders to work longer than their agreed hours. Not long ago, Mr Hooper's decision to walk out might have looked foolhardy because he has no education beyond high school and suffers from recurrent ill-health including insomnia.

Brad Hooper 上次辞职是在麦迪逊的一个杂货店,因为他的老板有点疯狂。当时经理要求他和收银员们拿出比约定的更长的时间去工作,如果他们拒绝的话,就威胁要开除掉他们。不久前,Hooper先生的这个走出困境的决定或许显得有点莽撞,毕竟他只有初中学历,而且反反复复的失眠,使得他的身体状况不尽如意。
原创
2022年05月17日 20:09
  • 翟码农
  • php
  • 274
  • 1
  • 0

今天测试“审批流撤销”功能,突然遇到一个奇怪的问题:日志显示新增数据成功,db里却查不到。

代码如下:

try{
$service_document->retreat($workflow_type_id, $doc_manage_id);
$this->requestSuccessResponse();
}catch(\Exception $e){
$service_log = new LogService();
$service_log->createLog($doc_manage_id, LabelService::TEXT_LOG_CATEGORY_DOCUMENT, $e->getMessage());
$this->requestErrorResponse("retreat fail");
}


createLog是添加日志记录的方法。测试功能,提示了retreat fail,但是数据库日志表里却看不到数据。


新增日志的方法,打印出sql以及新增之后的主键ID,都是没问题的。


那问题出在哪儿呢?

问题出在Service里retreat方法上。先上代码:

$res3 = $obj_model->table('tms_new_workflow_process')
->where(array('workflow_type_id' => $type, 'subject_id'=> $doc_manage_id))
->save($process_update);
if(false === $res3){
$obj_model->rollback();
throw new Exception("update workflow process fail!");
}
$obj_model->commit();
原创
2022年05月11日 23:20
  • 翟码农
  • 前端综合
  • 371
  • 0
  • 0
就是下面这段代码:
$("#list_language_file").html(htmlLanguageFile);
在页面里开始有效果,可突然我又发现不起作用了,list_language_file结点里的内容无法显示。

场景:

从文件列表里,点击新增tab页,打开文件详情页,代码大致如下:
$('#mainTab').tabs('add',{
width:$("#mainTab").parent().width() - 180,
title: " Document Detail-" + dataCellClick.doc_name,
iconCls: null,
href: 'Document/documentDetail?doc_manage_id='+dataCellClick.doc_manage_id,
closable: true
});

故障情况:

经过多次测试,发现只有在打开第二个文件的详情页时,上面html方法才没起作用。

问题原因:

tabs打开的页面仍处在同一个html页面里,所以当打开多个文件详情页时,开头id元素重复了。(经过检查,发现html方法作用在第一个详情页里去了)