升级wordpress的时候遇到:Briefly unavailable for scheduled maintenance. Check back in a minute.
其实解决方法很简单,到wordpress的根目录下。删除 .maintenance 文件即可。
以下内容纯COPY
原文来自:http://hiraku.tw/2015/09/3969/
- 前兩天 OS X El Capitan 出了 GM Candidate,所以就升級上去了,雖然外觀上 El Capitan 跟 Yosemite 看起來差不多,但是我裝的不少東西馬上就不能用了,這邊列一下目前遇到的問題跟解決方法,如果後面陸續遇到更多會持續補充。
-
- 首先最重要的是,El Capitan 增加了一個叫做 System Integrity Protection (簡稱 SIP ,或稱 rootless, 在 iOS 9 裡面也有) 的保護機制,SIP 最主要功能就是防止對系統程式的 code injection,還有使用未被 Apple 認可的 kext。
-
- 但是要關閉 SIP 也不難,只要進去 Recovery Mode (開機按著 Command + R 直接進入,千萬不要用按著 option 的方式選擇,否則會找不到 csrutil 的指令),用終端機輸入
-
- csrutil disable
- 之後重新開機,就可以關閉 SIP 了。若有使用到以下說明要關閉 SIP 的軟體,就必須按照上述方法操作,才能正常使用該軟體之功能。而開啟 SIP 也很簡單,輸入
-
- csrutil enable
- 特別要注意的是,csrutil 的設定實際上是在 NVRAM 中設定參數,所以當你重置 NVRAM (開機按住 command + option + P + R) 之後,SIP 會變回開啟狀態,所以要再重新關閉一次,切記切記!
-
-
-
- 而以下就是我目前遇到在 El Capitan 必須特別留意的軟體:
-
- TotalFinder:必須在 1.7.1 以上,並且關閉 SIP。 (1.7.1 beta 載點)
- XtraFinder:官網下載最新版,並且關閉 SIP。
- Bartender:必須在 1.3.2 版以上(如果你無法升級,試著開啟 beta 版檢查),暫時關閉 SIP (成功安裝後可以再次開啟)
- Homebrew:如果出現無法編譯的問題,就去下載 Xcode 7,開啟並安裝 command line tools 之後就能解決
- iStat Menus:必須在 5.11 版以上 (5.11 beta 載點),但因為在 5.11 之後,iStat Menus 的每個元件並不是分開的,而是整個合併為一大塊元件,所以目前不能把其他項目放置在 iStat Menus 元件的中間(例如:以前可以 RAM → Spotlight → CPU 這樣穿插放,但現在不行,iStat Menus 的項目必須連續。)如果要改各個項目的順序,要在 iStat Menus 裡面的設定改,不能直接在 menubar 拖曳。
- Sequel Pro:如果用 SSH 連接的話會出錯,去抓 Nightly Builds 就可以了
- theos:iOS 9 SDK 跟 theos 裡面的 header 似乎有些問題,如果有問題的話去用 iOS 8.4 的 SDK 或者抓 Xcode 6.4 回來編譯。(目前測試如果用到 Springboard 跟 UIKit2.h 的 header 好像會出錯)
- Parallels Desktop:必須在 PD 10 (含) 以上
- Fantastical 2:如果不能用下載 beta 看看(載點)(感謝 @katerjacob 補充)
- CleanMyMac 3:必須在 3.1 beta 以上
- 以上就是目前遇到的問題,但我覺得除了 iStat Menus 不能照以前的方法用之外(其實原因是因為 menucracker 失效了),其他不是太大問題。而 GM 版本雖然不是最終版本(這次是 GM Candidate,跟去年一樣,有可能會有 GM2、GM3),但是穩定性還算 OK(大家都知道,OS X 要真正穩定必須等到 10.x.2 之後…),所以如果有開發者帳號的,也可以考慮趕緊備份資料,準備上來 El Capitan 了!
所幸,上述程序我几乎都不用。除了homebrew/parallels desktop。。。这两个的问题我已经解决了。黑黑
如果你们有遇到或者要用上述程序的,先做好心里准备
众所周知,用curl上传只要设置4个变量即可(非HTTPS网站),那就是curlopt_url,curlopt_post,curlopt_returntransfer,curlopt_postfields,当然这4个都是大写。
curlopt_post,curlopt_returntransfer 都是 true,curlopt_url则是你要提交的网址,那么剩下的,curlopt_postfields就是你要上传的内容了。
上传文件在这里也变得非常简单,只需对应的值前面加个“@”即可,如curl_setopt($ch,CURLOPT_POSTFIELDS,array('file'=>'@/var/www/images/abc.jpg')); 文件通过realpath判断后存在的即可。
但是,这一切在php5.6里就发生了改成。php5.6不再支持@这样的上传方式,只能使用curl_file_create的方式来,所以上面的代码要改成
PHP代码
- curl_setopt($ch,CURLOPT_POSTFIELDS,array('file'=>curl_file_create('/var/www/images/abc.jpg','image/jpg','abc')));
看看文档里怎么说:
XML/HTML代码
- CURLFile should be used to upload a file with CURLOPT_POSTFIELDS.
然后官网的手册中的最后一条评论,仿佛是看不下去,写了个处理上传的程序
PHP代码
- There are "@" issue on multipart POST requests.
-
- Solution for PHP 5.5 or later:
- - Enable CURLOPT_SAFE_UPLOAD.
- - Use CURLFile instead of "@".
-
- Solution for PHP 5.4 or earlier:
- - Build up multipart content body by youself.
- - Change "Content-Type" header by yourself.
-
- The following snippet will help you :D
-
- <?php
-
-
-
-
-
-
-
-
-
- function curl_custom_postfields($ch, array $assoc = array(), array $files = array()) {
-
-
- static $disallow = array("\0", "\"", "\r", "\n");
-
-
- foreach ($assoc as $k => $v) {
- $k = str_replace($disallow, "_", $k);
- $body[] = implode("\r\n", array(
- "Content-Disposition: form-data; name=\"{$k}\"",
- "",
- filter_var($v),
- ));
- }
-
-
- foreach ($files as $k => $v) {
- switch (true) {
- case false === $v = realpath(filter_var($v)):
- case !is_file($v):
- case !is_readable($v):
- continue;
- }
- $data = file_get_contents($v);
- $v = call_user_func("end", explode(DIRECTORY_SEPARATOR, $v));
- $k = str_replace($disallow, "_", $k);
- $v = str_replace($disallow, "_", $v);
- $body[] = implode("\r\n", array(
- "Content-Disposition: form-data; name=\"{$k}\"; filename=\"{$v}\"",
- "Content-Type: application/octet-stream",
- "",
- $data,
- ));
- }
-
-
- do {
- $boundary = "---------------------" . md5(mt_rand() . microtime());
- } while (preg_grep("/{$boundary}/", $body));
-
-
- array_walk($body, function (&$part) use ($boundary) {
- $part = "--{$boundary}\r\n{$part}";
- });
-
-
- $body[] = "--{$boundary}--";
- $body[] = "";
-
-
- return @curl_setopt_array($ch, array(
- CURLOPT_POST => true,
- CURLOPT_POSTFIELDS => implode("\r\n", $body),
- CURLOPT_HTTPHEADER => array(
- "Expect: 100-continue",
- "Content-Type: multipart/form-data; boundary={$boundary}",
- ),
- ));
- }
好吧,其实多文件上传用这样的方式就挺好。
现在写PHP好象不用Composer总感觉有点Low了吧?好吧,即使这样,你在使用composer update的时候是不是也发现网速、进度low的不行。一个composer update要等半天。不说这个吧,你就是一个composer init也要等半天,这只是个空项目,你都要等这么久?composer 如果不加-vvv参数,你就感觉整个世界都停在那里了。所以,如果连接原始的composer还是加个-vvv参数吧
国内常见镜像有三个:
XML/HTML代码
- http://pkg.phpcomposer.com/
- https://toran.reimu.io/
- http://packagist.cn/
使用方法很简单一种是在~/.composer/config.json中加入相应的信息,一种是在当前项目的composer.json中加入:
JavaScript代码
- "repositories": [
- {"type": "composer", "url": "http://pkg.phpcomposer.com/repo/packagist/"},
- {"packagist": false}
- ]
加入的时候注意语法,如果是json的最后一个元素,记得不要加","即可,否则 会报错
OK这样就可以了,尽情的尝试吧(packagist.cn更新的有点慢,toran.reimu.io 是https的,如果你本机openssl版本低可能会更新失败)。好象话这么一说,只能用pkg.phpcomposer.com的源了(嗯,忍忍吧,如果他不能用,你再换)
更新:composer 源
鉴于我每次安装win7都是在用bootcamp的情况下,随之而来带来的问题就是,只有一个分区,这让我很苦恼。所以到最后我往往都是直接用虚拟机算了。
本文来自CU,本人目前没有测试过,先备着,万一哪天我又心血来潮了,我就用它来试一下(原文来自:http://bbs.chinaunix.net/thread-4166135-1-1.html)
本帖最后由 xinyv 于 2015-01-12 12:15 编辑
2015年元旦macbook air 安装记录
目的:
1、air 安装双系统 Yosemite + win7
2、win7 多分区
3、单U盘安装
准备:
16G U盘一个usb3.0
制作安装U盘:
1、下载最新的 MacOS Yosemite 10.10.1, win7sp1
下载yosemite必须用 mac app store 下载,我下载的版本
yosemite 10.10.1 md5:e37ac9e9c79de428529c6933419ee5ff
win7sp1_x64.iso md5:480b62c3acd6c8a36b18d9e906cd90d2
2、制作 win7 安装盘
打开 Launchpad -> 其他 -> Boot Camp 助理,点击继续,选择创建 Windows 7 或更高版本的安装盘 和 从 Apple下载最新的Windows 支持软件,点击继续,选取你的 win7 的iso镜像,然后点继续,速度快慢就看你的网速是否给力了。
制作完之后,找另一个 windows 系统,插上 U盘,在硬盘上新建一个文件夹,把U盘里面所有的文件都拷贝进去,这时候,你可以用U盘引导一下air 试试,(插入U盘,启动的时候按 option,选择WININSTALL)你会发现键盘鼠标都不能用,查资料是因为新款air使用了usb3.0 win7默认没有驱动
安装驱动,参考链接 http://bbs.feng.com/read-htm-tid-8541291.html
安装驱动其实就是编辑 boot.win 和 install.win 这两个文件
创建二个文件夹m1、m2 用来 mount上面的两个文件 (cmd 命令)
然后从刚才的备份中挂载 boot.win 和 install.win 我备份的目录是 D:\uu
XML/HTML代码
- dism /mount-wim /wimfile:d:\uu\source\boot.wim /index:2 /mountdir:m1
- dism /mount-wim /wimfile:d:\uu\sources\install.wim /index:4 /mountdir:m2
添加usb3.0驱动
XML/HTML代码
- dism /image:m1 /add-driver /driver:d:\uu\$WinPEDriver$\IntelxHCISetup\Drivers\xHCI\Win7\x64\iusb3hub.inf
-
- dism /image:m2 /add-driver /driver:d:\uu\$WinPEDriver$\IntelxHCISetup\Drivers\xHCI\Win7\x64\iusb3hub.inf
-
- dism /image:m1 /add-driver /driver:d:\uu\$WinPEDriver$\IntelxHCISetup\Drivers\xHCI\Win7\x64\iusb3xhc.inf
-
- dism /image:m2 /add-driver /driver:d:\uu\$WinPEDriver$\IntelxHCISetup\Drivers\xHCI\Win7\x64\iusb3xhc.inf
-
- dism /image:m1 /add-driver /driver:d:\uu\$WinPEDriver$\IntelxHCISetup\Drivers\HCSwitch\Win7\x64\iusb3hcs.inf
-
- dism /image:m2 /add-driver /driver:d:\uu\$WinPEDriver$\IntelxHCISetup\Drivers\HCSwitch\Win7\x64\iusb3hcs.inf
提交修改,umount 文件
XML/HTML代码
- dism /unmount-wim /mountdir:m1 /commit
- dism /unmount-wim /mountdir:m2 /commit
- rmdir m1 m2
把 U 盘卸载,重新插到 air 上面
3、制作 air 安装U盘
打开 Launchpad -> 其他 -> 磁盘工具,把U盘的信息全部抹掉,包括默认分区也要删除,然后重新创建U盘分区,创建的时候选择主引导记录,分两个区,第一个是 win_setup文件系统类型选 exfat,第二个选 MacOS 日志文件系统,第一个一定要是 windows 分区
参考链接:http://bbs.feng.com/read-htm-tid-2628649.html
以前直接用下载的 dmg 制作就可以,新版系统的制作方式已经变化了
打开Finder-应用程序,找到安装OS X Yosemite,右键-显示包内容,依次点开Contents-SharedSupport文件夹,你会发现一个InstallESD的DMG文件,双击打开这个文件,你会看到一个文件夹 Packages
下面打开终端输入
XML/HTML代码
- defaults write com.apple.finder AppleShowAllFile -bool true
- killall Finder
如果这条命令提示错误,你可以把后面的 -bool true 改成 YES,实在不行就 man 一下
执行成功以后在看看刚才那个文件夹,多出了几个隐藏文件 BaseSystem.dmg
打开 Launchpad -> 其他 -> 磁盘工具,选择 u 盘,选恢复
把左侧的 u 盘拖到目标盘那里,把刚才我们看到的隐藏文件 BaseSystem.dmg 拖到源磁盘那里,然后点恢复。恢复完成以后,把 BaseSystem.dmg 和 BaseSystem.chunklist 拷贝到 u 盘苹果系统分区的根目录里面,然后进入 System\Installation 删除 Packages 这个链接,把 InstallESD 下面的 Packages 文件夹拷贝到这里来。拷贝 BaseSystem 哪两个文件不能省略,省略之后引导系统的时候会提示 undefined error 0
把系统文件在恢复隐藏
XML/HTML代码
- defaults write com.apple.finder AppleShowAllFile -bool false
- killall Finder
到此 Yosemite 的安装盘制作完成,我发现在 air 上按照上面的方法制作都可以成功,但在 pro 上制作安装盘失败。原因还没有找到
参考链接:http://mac-how-to.wonderhowto.co ... 0-yosemite-0155306/
4、多系统安装盘制作
把刚才制做好的 U盘插到刚才我们备份的 win系统上,利用 Windows7-USB-DVD-Download-Tool 工具和 win7 iso 创建一个win 安装 U盘,使用第一个我们预留的分区,制作完成以后,拷贝刚才我们备份的 uu 下的所有文件,直接覆盖进 u盘的 win 分区。拷贝完数据,安装盘就制作完成了。下面就是安装系统了。
5、安装系统
因最前面有一个 200M 的 efi 分区,最后又有一个 Recovery 分区,在加上苹果系统自己占用的一个分区,win7 就只剩下一个分区了,网上说的总总办法,比如删除 Recovery,扩展那个 efi 分区,在10.10.1 上测试均有问题,不是 mac 系统找不到就是 win7 起不来,经多多次测试,发现一个折中的方案
在重装系统的时候,直接提前分区,我分了 三个区,
第一区 WinOS
第二区 data
第三区 MacOS
这么分区的原因是 win7 会在最前面放一个 200 M的 efi,MacOS 会在最后面放一个 Recovery,这样前后都有系统分区把数据分区和功能分区隔离开,不容易损坏,分区之后用U盘引导,先安装 Yosemite,安装在最后一个分区,安装完以后在重新引导安装 win7,这时候你会发现 Recovery 被挤出了主分区表,Win7 看到的是未分配空间,不用搭理他,反正不是给你win7 用的,不认识就不认识吧,然后安装win7,安装 boot camp。安装好以后你会发现虽然 win7不认识,然这并不影响mac系统,启动的时候按 option ,你就会发现Recovery 仍旧是可以使用的,而且因为他被挤出去的原因,我们现在又多了一个分区名额,你可以增加一个扩展分区,然后在分若干个盘了。
至此,air就安装完了,我们保留了所有默认分区,而且 win7 支持多分区,单U盘安装双系统,多分区目的完成