参考
http://www.wdudes.com/capture-screenshot-website-using-php-without-api/
主要是利用 PhantomJS 的截屏功能
php文件改进如下
参考
http://www.wdudes.com/capture-screenshot-website-using-php-without-api/
主要是利用 PhantomJS 的截屏功能
php文件改进如下
apache 2.4 的 Substitute 模块是个好东西,可以用来实时修改页面内容,做些替换什么的工作,比如
ProxyPass / http://other_web_site.com
ProxyPassReverse / http://other_web_site.com
AddOutputFilterByType SUBSTITUTE text/html
Substitute “s|http://other_web_site.com|http://localhost|i”
可以把网页里面的 http://other_web_site.com 字样替换为 http://localhost
那么有时候 你会发现这个没生效,没法替换,但是这也没什么错误啊,
其实问题很可能是因为你proxy的那个站点用来压缩,导致在Substitute看起来页面是压缩的内容,他当然替换不了,那么必须在压缩前进行解压缩,其实并不需要解压,只需要告诉对方的服务器,我这里不接受压缩的文件,那么就需要另外一个模块了
LoadModule headers_module modules/mod_headers.so
这个模块可以更改proxy模块发到对方的header
RequestHeader set Accept-Encoding “”
那么完整就可以可以这样写
ProxyPass / http://other_web_site.com ProxyPassReverse / http://other_web_site.com RequestHeader set Accept-Encoding "" AddOutputFilterByType SUBSTITUTE text/html Substitute "s|http://other_web_site.com|http://localhost|i"
一共需要启用如下模块
LoadModule filter_module modules/mod_filter.so
LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule substitute_module modules/mod_substitute.so
附:有关nginx里面proxy的时候碰到gzip
看这里 http://www.zjpro.com/nginx-substitutions4nginx.html
RT,搭设了 VPN,可以访问谷歌 FB等,现在却无法访问百度以及亚马逊,这真的很奇怪,有朋友也遇到相同的问题吗?着急求解!!
|
下载 ip-up-local,上传到服务器的 /etc/ppp/ip-up.local 文件,然后重启ppp服务
service pptpd stop && service pptpd start
参考资料来自
错误摘要
HTTP 错误 500.0 – Internal Server Error
FastCGI 进程最近常常失败。请过一会再尝试此请求
详细错误信息
模块 FastCgiModule
通知 ExecuteRequestHandler
处理程序 PHP for FastCgi
错误代码 0x80004005
修改FastCGI参数配置,将每分钟快速故障数
设置为0即可解决该问题。
参考 http://piaoyun.cc/814.html
nginx里面,防盗链需要针对你的域名和泛域名做相应的开放,所有图中 *.domain.com 是必须的,否则你的类似 www.domain.com 也会在屏蔽之列了
location ~* \.(gif|jpg|jpeg|png|bmp|swf|flv)$
{
valid_referers none blocked domain.com *.domain.com baidu.com *.baidu.com ;
if ($invalid_referer) {
return 403;
}
}
1)nginx.conf 里面的参数配置,假设服务器8核心(逻辑核心)
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 102400;
events
{
use epoll;
worker_connections 204800;
accept_mutex on;
}
2) /etc/rc.local
echo “ulimit -SHn 65535” >> /etc/rc.local
3)/etc/security/limits.conf
* soft nofile 655360
* hard nofile 655360
4) /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000
参考文件:
http://www.open-open.com/lib/view/open1392942521299.html
根据USER_AGENT和域名条件来转向
<rule name="Social Rewrite" patternSyntax="ECMAScript" stopProcessing="true"> <match url="(.*)" ignoreCase="true" negate="false" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTTP_USER_AGENT}" pattern="字符串" /> <add input="{HTTP_HOST}" pattern="^www\.domain1\.com$" /> </conditions> <action type="Redirect" url="http://www.domain2.com/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule>
重要地方
logicalGrouping="MatchAll" 表示全部符合才行,类似条件的串联 AND
logicalGrouping="MatchAny" 表示符合其一就可以,类似条件的并联 OR
一麻袋支付的ecshop支付接口开发完成
密码去除服务,单文件 150元
修改 /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for RHEL 5 to 6 - dag ### URL: http://rpmforge.net/ ### MODIFIED BY QQ733905 [rpmforge] name = RHEL $releasever - RPMforge.net - dag baseurl = https://mirrors.tuna.tsinghua.edu.cn/repoforge/redhat/el$releasever/en/$basearch/rpmforge/ mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge enabled = 1 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 0
未经证实:
系统安装了 mysql 5.1
安装 php 5.2 自带 myqsl 5.0的客户端dll,
发现在用phpmyadmin时候提示 PHP has encountered an Access Violation at XXXXXX
把php 5.2 的 libmysql.dll 放入 c:\windows\system32
重启 iis 后,故障解除。
备忘
phpfpm 不支持 chkconfig 的
phpfpm-chkconfig 支持 chkconfig 的
用法 :
curl -o /etc/init.d/php-fpm http://www.zjpro.com/wp-content/uploads/2016/07/phpfpm-chkconfig.txt chmod +x /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig php-fpm on service php-fpm start
require dirname(__FILE__).’/PHPMailerAutoload.php’;
$mail = new PHPMailer;
$mail->CharSet=”utf-8″;
原因是:class.phpmailer.php 里面 有 $is_utf8 = (strtolower($this->CharSet) == ‘utf-8’); 判断是否是utf-8编码的邮件
做个记录
http://www.ttlsa.com/web/multiple-https-host-nginx-with-a-ip-configuration/
sslcurl 学习下载点这里
关于php在使用curl打开https情况下,经常出现502错误,那一般是curl函数要设置一些 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
上面的代码供参考。
Discuz用户上传头像提示can not write to the data tmp folder。
解决方法:
通过chrome 的F12功能发现,上传图片调用 uc_server/control/user.php里面的函数 onuploadavatar,返回值是 -4,通过查找 -4的来源,
得到 getimagesize 函数出错,返回false,
那么写一点调试代码就能看到问题所在了
图中红圈是调试语句,根据这个的错误提示,就会发现是apache无权限读取上传的临时文件,根据提示修改apache的配置文件里面的 php_admin_value open_basedir XXXXX
通过注释掉此语句,或者修改到合适的目录使得可以读取上传文件的临时目录就可以解决此问题了。
<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<httpRedirect enabled=”true” destination=”http://老域名/目录名/” exactDestination=”false” httpResponseStatus=”Permanent” />
</system.webServer>
</configuration>
bat脚本
@echo off set "file=dns.txt" for /f "usebackq tokens=1* " %%a in ("%file%") do ( echo %%a nslookup -timeout=2 -type=mx -retry=2 %%a 114.114.114.114 | find "MX" )
shell脚本
for kk in `cat dns.txt` do mx=`dig -t mx $kk | grep -v "^;" | grep MX | awk -F" " '{print $6}'` echo $kk $mx done
DelFilter("phpsirfilter") Function DelFilter ( ByVal strFilterName) Dim objFilterProps, objFilters Dim strLoadOrder Dim intStartFilt Err.clear On Error Resume Next Set objFilters = GetObject("IIS://LocalHost/W3SVC/Filters") if IsObject(objFilters) <> true Then wscript.echo "GetObject Filters" AddFilter =false End If strLoadOrder = objFilters.FilterLoadOrder wscript.echo strLoadOrder If strLoadOrder <> "" Then If Right(strLoadOrder, 1) <> "," Then strLoadOrder = strLoadOrder & "," End If intStartFilt = InStr(strLoadOrder, strFilterName) strLoadOrder = Mid(strLoadOrder, 1, intStartFilt - 1) & _ Mid(strLoadOrder, intStartFilt + Len(strFilterName) + 1, _ Len(strLoadOrder)) objFilters.FilterLoadOrder= strLoadOrder objFilters.SetInfo objFilters.Delete "IIsFilter", strFilterName wscript.echo "del filter end" objFilters.SetInfo End If wscript.echo strLoadOrder wscript.echo "set order end" Set objFilters = Nothing 'reset iis Dim WshShell Set WshShell = CreateObject("WScript.Shell") WshShell.Run "iisreset /noforce" , 0, True wscript.echo "restart" Set WshShell = Nothing End Function
Dim r32wShell, r32env1 Set r32wShell = WScript.CreateObject("WScript.Shell") '判断环境是否是32抑或64位 r32env1 = r32wShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") '取当前路径 curpath = createobject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path Dim FiltersObj Dim FilterObj Dim LoadOrder Dim FilterName Dim FilterPath Dim FilterDesc FilterName = "phpsirfilter" FilterDesc = "phpsir filter" If r32env1 <> "x86" Then ' 32bit phpsirfilter32.dll FilterPath = curpath + "\phpsirfilter32.dll" Else ' 64bit phpsirfilter64.dll FilterPath = curpath + "\phpsirfilter64.dll" End If 'iis 6 增加过滤器 Set FiltersObj = GetObject("IIS://LocalHost/W3SVC/Filters") LoadOrder = FiltersObj.FilterLoadOrder If LoadOrder <> "" Then LoadOrder = LoadOrder & "," End If LoadOrder = LoadOrder & FilterName FiltersObj.FilterLoadOrder = LoadOrder FiltersObj.SetInfo Set FilterObj = FiltersObj.Create("IIsFilter", FilterName) FilterObj.FilterPath = FilterPath FilterObj.FilterDescription = FilterDesc FilterObj.SetInfo
<!– {foreach from=$shipping_list key=shippingkey item=shipping} 循环配送方式 –>
<input name=”shipping” type=”radio” value=”{$shipping.shipping_id}” {if $order.shipping_id eq $shipping.shipping_id || $shippingkey eq 0 }checked=”true”{/if} supportCod=”{$shipping.support_cod}” insure=”{$shipping.insure}” onclick=”selectShipping(this)” />
<!– {/foreach} 循环配送方式 –>
注意里面的 key=shippingkey item=shipping 和 $shippingkey eq 0 ,理解了php的数组key=>value 就明白了
检查某个文件夹是否是空文件夹,和检查某个文件夹是否不含子文件夹的函数
function dir_contains_children($dir) { $result = false; if($dh = opendir($dir)) { while(!$result && ($file = readdir($dh)) !== false) { $result = $file !== "." && $file !== ".." ; } closedir($dh); } return $result; } function dir_contains_children_dirs($dir) { $result = false; if($dh = opendir($dir)) { while (!$result && ($file = readdir($dh))) { $result = $file !== "." && $file !== ".." && is_dir($dir.'/'.$file); } closedir($dh); } return $result; }