[php]php 計算 session 數量時,沒有權限查看資料夾

參考網址:軒.net

一開始使用 shell 指令想直接抓出量

ls /var/lib/php/sessions/sess_*|wc -l

用 root 運作良好,but 變成 php

$session_count=\exec('ls /var/lib/php/sessions/sess_*|wc -l');

馬上因為權限問題掰掰。

查了一堆資料,session 本來就設定不給 www-data 使用

我也不想隨便改資料夾權限

就用其他方式解

寫一隻 session_count.sh 放在/var下

#!/bin/bash
ls /var/lib/php5/sess_*|wc -l

記得給執行權限

chmod u+x /var/session_count.sh

安裝 sudo

apt-get install sudo

編輯 sudoers

visudo

加上此行

www-data ALL = (root) NOPASSWD: /var/session_count.sh

之後在 php 內招換

$online_count = \exec("sudo /var/session_count.sh 2>&1");
if (!preg_match('/^\d+$/', $online_count)) {
	$online_count = -1;
}

就得到 session 數量啦!

發表於 程式設計 | 發表迴響

[hinet]申請網域名稱sp.idv.tw

參考網址:domain.hinet.net

sa.ddns.net的網域名稱會被學術網路誤判為黑名單,索性花一些錢申請了hinet的網域名稱
sa.idv.tw已被申請了,可惜!
申請sp.idv.tw來用400元/年  10年3200元

https://tw.godaddy.com/whois 可以查到whois資料

https://www.net-chinese.com.tw/ 可以查到whois資料

 

設定範例https://www.evo-mailserver.com.tw/support/domain_name_hosting.php

 

DNS Server NameIP Address

admns1.hinet.net203.66.88.192

admns2.hinet.net203.74.116.192

發表於 程式設計 | 發表迴響

[mysql]複製資料庫

mysql同步資料庫的操作實在有些麻煩,又常會出現一些資料庫不同步時的問題,不容易掌控。所以退而求其次,採用非即時的複製方式。

前置作業:
1.先將僅在內部進行偵聽的安全機制打開,讓外面的主機可以讀取資料庫
原因是mysql的安全機制
用telnet 192.168.1.9 3306 會發現被拒絕,無法連入
問題在於服務器僅在內部進行偵聽。
較新版本的Ubuntu(≥16.04)在/etc/mysql/mysql.conf.d/mysqld.cnf中可能有此行。

2.複mysql user中的rootI權限,指定讀取主機。

用mysqldump工具讀取遠端資料庫
mysqldump -h sa.xxx.xxx -u root -p'xxxxxx' demo > /tmp/demo.sql
可以指定讀取不同主機的資料庫,會出現安全性的警告,不可以在命令列打密碼
mysqldump: [Warning] Using a password on the command line interface can be insecure.
用變數將密碼傳入可以解決這個問題

最終程式碼:
 

單一行的寫法
export MYPW=xxxxxx && mysqldump -h 125.x.xxx.xxx -u root -p$MYPW  --databases gtnpa  | mysql -u root -p$MYPW

.sh的寫法
#!/bin/sh
MYPW=xxxxxx
mysqldump -h 125.x.xxx.xxx -u root -p$MYPW  --databases gtnpa  | mysql -u root -p$MYPW

 

發表於 程式設計 | 發表迴響

[mysql]mysql資料庫備份與還原

參考網址:https://blog.udn.com/wordred0227/1912227

 

發表於 程式設計 | 發表迴響

[ubuntu]rsync同步文件時如何排除指定文件夾或多個目錄

參考網址:https://kknews.cc/zh-tw/code/rnjar5o.html

 

如果您喜歡使用–exclude選項,您可以用括號{}列出您想要排除的文件和目錄,中間用逗號隔開,如下所示:

排除file1.txt,排除目錄dir/*,排除目錄dir2

rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

如果要排除的文件或者目錄的數量很大,可以在一個文件中指定要排除的文件和目錄,並將文件傳遞給exclude-from選項,而不是使用多個–exclude選項。

下面的命令與上面的命令完全相同:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/

編輯exclude-file.txt文件

原文網址:https://kknews.cc/code/rnjar5o.html

發表於 Linux系統 | 發表迴響

[bootstrap]bootstrap 讓 page-break-after無作用,無法順利分頁

參考網址:stackoverflow

網路討論

Firstly, page-break doesn't work inside absolutely positioned elements so make sure your page-break isn't inside one.

Now, since float is causing the page-break to be ignored, we need to clear the float.

The problem is that clear: both; doesn't work if the element with page-break-after: always; is a float (eg: .col-xs-12 in bootstrap).

The trick is to add 2 new divs with the clear and page-break after the div you want to add the page-break to:

<div class="page-break-clear"></div>
<div class="page-break">&nbsp;</div>

<style type="text/css">
.page-break-clear { 
  clear: both;
}
.page-break {
  page-break-after: always; /* depreciating, use break-after */
  break-after: page;
  height: 0px;
  display: block!important;
}
</style>

試過了,還是沒作用。

發表於 程式設計 | 發表迴響

[bash]變數

新增一個變數
t2=gg
echo $t2

在~/.bashrc中新增一個變數
export LC_CTYPE="zh-TW.UTF-8"

 

發表於 Linux系統, 程式設計 | 發表迴響

[Sublime] SFTP同步遠端資料夾

參考網址:一起唱DoReMi

使用Sublime[官網]可以很輕鬆地和遠端伺服器的資料夾同步,

首先記得下載Sublime SFTP的套件[下載]。

 

除了到官方網站下載,另外也可以透過sublime的內建指令安裝

最後搜尋SFTP即可完成安裝!

發表於 程式設計 | 發表迴響

[mysql]mysql 不同條件count ,多條件count()及行列加總

參考網址:程式人生 https://www.796t.com/content/1550942407.html

用途:統計各欄次數

mysql total time lse case from pre div clas

 

create table abc(A int,B int)

Select A,count(B) as total from ABC group by A
Select A,count(B) as total1 from ABC where B > 30 group by A
Select A,count(B) as totlal2 from ABC where B > 20 group by A

.

如何合並這三個查詢?
得到一個查詢結果:
A,total,total1,total2

答:

Select A,
count(B) as total,
sum(case when B > 30 then 1 else 0 end) as total1,
sum(case when B > 20 then 1 else 0 end) as total2 
from ABC group by A
查詢該項目(i1)在該班級該性別的參賽人數
select sum(case when i1='v' then 1 else 0 end) as c1,
       sum(case when i2='v' then 1 else 0 end) as c2,
       sum(case when i3='v' then 1 else 0 end) as c3,
       sum(case when i4='v' then 1 else 0 end) as c4,
       sum(case when i5='v' then 1 else 0 end) as c5

from player where gov_code='701' and player_sex=2

行列加總

行加總:計算該行有多少v
select sum(case when i1='v' then 1 else 0 end) as c1,
       sum(case when i2='v' then 1 else 0 end) as c2,
       sum(case when i3='v' then 1 else 0 end) as c3
from player where gov_code='701' 


列加總:計算該列有多少v
select (s1+s2+s3+s4+s5) as ss from
(select 
    (case when i1='v' then 1 else 0 end) as s1,
    (case when i2='v' then 1 else 0 end) as s2,
    (case when i3='v' then 1 else 0 end) as s3
from player where player_id=1) as abc

 

發表於 程式設計 | 發表迴響

[bootstrap]側邊欄

參考網址:CWC 可收放及響應式的「側邊導覽列」

範例程式中有使用jquery
為了程式的相容性,想將jquery改成純javascript
 

 
//  展開/收合按鈕
$(document).ready(function() {

    $("#collapse").on("click", function() {

        $("#sidebar").toggleClass("active");
        $(".fa-align-left").toggleClass("fa-chevron-circle-right");
    })
})

參考https://stackoverflow.com/questions/18880890/how-do-i-toggle-an-elements-class-in-pure-javascript
改成
 

function tg()  {
	//alert('bbb');    

	const toggleClass = (el, className) => el.classList.toggle(className);
	//$("#sidebar").toggleClass("active");
	toggleClass(document.getElementById('sidebar'),'active');

	//目前無法改
	//$(".fa-align-left").toggleClass("fa-chevron-circle-right");
	//toggleClass(document.getElementById('fa-align-left'),'fa-chevron-circle-right');
	//alert('aaa');
} 

可以收展,但icon無法改,先這樣囉

發表於 程式設計 | 發表迴響