php

PHP js 左移 << 操作

主要因为 PHP 运行在 64位, js 是 32位,造成的. 问题表现: In Javascript: document.write((1732584193 << 5)+"<br />"); document.write((125 << 5)+"<br />"); output: -391880672 4000 In PHP: echo (1732584193 << 5)."<br />"; echo (125 << 5)."<br />"; output: 55442694176 4000 解决办法: $a = 1732584193; $b = $a << 5; $c = (($a << 5) << 32) >> 32; echo $a, "\n"; # 1732584193 echo $b, "...

linux下 安装php的gettext模块

 linux下 安装php的gettext模块 安装php的模块有两种方式: 一、重新编译php,加上--with-gettext 二、动态安装 现在说下第二个动态安装 1、下载同版本的php原包,解压后进入ext目录,目录下便是模块 2、进入gettext目录下执行: /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config (以上两个命令的路径根据自己系统情况而定) make make install 3、在php.ini里添加上gettext.so extension = "gettext.so" 重启php即可

ThinkPHP5 修改器不生效

  ThinkPHP5 修改器不生效,感觉越来越难用了,文档写的也不清楚,很多莫名其妙的问题. 修改器是个好东西,可以自动处理一些值,这次我遇到的问题是 我字段中间有下划线 比如  new_name 这样的话 修改器函数名需要定义为 setNewnameAttr 否则会不执行.   public function setNewnameAttr($value) { 这里写你处理值的算法 return $value; }

linux php gettext 多国文字翻译失效问题

 最近下载了一套程序,其中多国文字翻译用的是 php gettext 扩展, 本地调试是windows upupw 一切正常,上传到vps 里就无效了,插件设置都正常. 最后找到了解决办法, 使用locale -a可以看到os支持的语言文字国家地区码, 比如我的机器 执行 locale -a 提示: C C.UTF-8 POSIX 我将原本的 ZH-cn.UTF-8 修改为 C.UTF-8 并且将语言文件目录也修改为这个. 然后刷新 就 可以正常翻译了.

thinkphp5 buildHtml 静态文件生成

 利用\think\template\driver\File.php文件整合buildHtml 1.在controller.php创建方法如下 /** * 创建静态页面 * @access protected * @htmlfile 生成的静态文件名称 * @htmlpath 生成的静态文件路径 * @param string $templateFile 指定要调用的模板文件 * 默认为空 由系统自动定位模板文件 * @return string * */ protected function buildHtml($htmlfile = '', $htmlpath = '', $templateFile = '') { $content = $this->fetch($templateFile); $htmlpath = !empty($htmlpath) ? $htmlpath : './appTemplate/'; $htmlfile = $htmlpath . $htmlfile . '.'.config('url_html_su...

PHP 读取配置文件(.ini文件)

 parse_ini_file (PHP 4, PHP 5, PHP 7) parse_ini_file — 解析一个配置文件 说明 ¶ array parse_ini_file ( string $filename [, bool $process_sections = false [, int $scanner_mode = INI_SCANNER_NORMAL ]] ) parse_ini_file() 载入一个由 filename 指定的 ini 文件,并将其中的设置作为一个联合数组返回。 ini 文件的结构和 php.ini 的相似。 参数 ¶ filename 要解析的 ini 文件的文件名。 process_sections 如果将最后的 process_sections 参数设为 TRUE,将得到一个多维数组,包括了配置文件中每一节的名称和设置。process_sections 的默认值是 FALSE。 scanner_mode Can either be INI_SCANNER_NORMAL (def...

PHP 7.2 OpenSSL实现DES算法 代替mcrypt_encrypt支持pkcs5Pad

 <?php // php 7.2 class CryptDes { var $key; var $iv; //偏移量 function CryptDes( $key, $iv=0 ) { //key长度8例如:1234abcd $this->key = $key; if( empty($iv) ) { $this->iv = $key; //默认以$key 作为 iv } else { $this->iv = $iv; } } function encrypt($data) { $data = $this->pkcs5Pad ( $data, 8 ); return base64_encode(openssl_encrypt ($data, 'des-cbc', $this->key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $this->iv)); } function decrypt(...

Thinkphp5 海量数据查询分页(paginate)ORDER BY和LIMIT 造成查询很慢的临时解决办法

 一台数据监控后台,图省事就用Thinkphp5写了下,数据30万的时候分页就很卡了,基本上6秒才能查询执行完。 基本上是 ORDER BY 和 LIMIT 造成的查询很慢,详细的就不多说了,下面贴一下我自己的解决办法,没有深入去处理,只是个临时解决办法,仅供参考。 涉及文件:\thinkphp\library\think\db\Query.php 涉及函数:paginate 涉及代码: //$results = $this->options($options)->bind($bind)->page($page, $listRows)->select();  这是原本的查询代码,注释掉 下面两行是新增的查询代码: $sql="SELECT * FROM ".$options['table']." INNER JOIN (SELECT id FROM ".$options['table']." ORDER BY ".key($options['order'])....

h5ai 中文目录及文件均为乱码404无法下载解决办法

 经常布置服务器,所以想搞一个软件仓库,找了下h5ai看着挺好,目前部署在windows下upupw的运行环境,会有中文目录显示乱码,打开 中文目录提示404的问题。 这里修改两行代码即可解决: \_h5ai\private\php\core\class-context.php public function to_href($path, $trailing_slash = true) { $rel_path = substr($path, strlen($this->setup->get('ROOT_PATH'))); $parts = explode('/', $rel_path); $encoded_parts = []; foreach ($parts as $part) { if ($part != '') { $encoded_parts[] = rawurlencode(mb_convert_encoding($part, "UTF-8", "GBK")); //rawurlencode($p...

upupw 减少启动进程数

 upupw 是目前我用过的windows PHP环境中唯一一个我用过并且认为可以作为正式生产环境使用的套件。 upupw默认启动的是八个PHP进程八个NGINX进程一个MYSQL进程。一台小内存的机器不想让它占用太多的系统资源, 首先是修改NGINX进程数,打开UPUPW_NP5.5\Nginx\conf\nginx.conf 第一行:worker_processes 8; 修改为 worker_processes 1; 即为单进程 然后是修改PHP进程数,打开 \UPUPW_NP5.5\PHP5\phpfpm\winsw.xml 找到:<startargument>"E:/soft/UPUPW_NP5.5/PHP5/php-cgi.exe -c E:/soft/UPUPW_NP5.5/PHP5/php.ini" -n 8 -i 127.0.0.1 -p 9055</startargument> 将其中的 -n 8 改为 -n 1 就是单PHP进程,  最后运行upupw 输入 rr 重启nginx即可...