找到你新安裝的php
和php-config
這兩個(gè)文件,有可能在/usr/local/opt/php/bin這里,把這兩個(gè)文件鏈接到/usr/bin/目錄下。
執(zhí)行以下命令進(jìn)行鏈接,10.11之后的版本需要使用sudo。(假如你新安裝的php和php-config在/usr/local/opt/php/bin目錄下)
sudo ln -f /usr/local/opt/php/bin/php /usr/bin/php
sudo ln -f /usr/local/opt/php/bin/php-config /usr/bin/php-config
完成后,再運(yùn)行命令php -v
查看php版本是不是改變了。
看你問了好幾個(gè) draft-js 的問題,難道你使用之前不看官方文檔嗎?https://draftjs.org/docs/over...
thinkphp我知道是能這樣,laravel我不知道能否實(shí)現(xiàn)
看樣子你用 laravle默認(rèn)的用戶認(rèn)證,在執(zhí)行 php artisan make:auth
,它會(huì)生成布局、注冊(cè)和登錄視圖以及所有的認(rèn)證接口的路由。register.blade.php
在 resources.views.auth
里。
或者你可以執(zhí)行 php artisan route:list
找到 | GET|HEAD | register | register| App\Http\Controllers\Auth\RegisterController@showRegistrationForm
,順著控制器找。注意 RegisterController
使用了 trait
。不了解 trait
你也找不到 showRegistrationForm
。
你可以試試阿里云的OSS服務(wù),我一般都是把大資源扔到OSS上這樣自己的服務(wù)器壓力會(huì)減小不少
node不太懂,但我猜可能是這樣的
因?yàn)槌跏枷蛄亢兔罔€都是要跟分塊大小保持一致,也就是說你用cbc-128,那么二者的大小都是16個(gè)字節(jié)
但看你的代碼顯然不是這樣
use Event\Event;
use Event\Select;
$pid_list = [];
$parent_pid = posix_getpid();
for ($i = 0; $i < 4; ++$i)
{
$pair = stream_socket_pair(STREAM_PF_UNIX , STREAM_SOCK_STREAM , STREAM_IPPROTO_IP);
$pid = pcntl_fork();
if ($pid < 0) {
throw new Exception("創(chuàng)建子進(jìn)程失敗");
} else if ($pid > 0) {
// 父進(jìn)程
fclose($pair[0]);
$child = $pair[1];
fwrite($child , "父進(jìn)程問候 " . posix_getpid());
Select::addIo($child , Event::READ , function($ctrl , $socket , $child) use($parent_pid){
$msg = fread($socket , 65535);
echo "父進(jìn)程領(lǐng)域!父進(jìn)程 {$parent_pid} 當(dāng)前執(zhí)行進(jìn)程 " . posix_getpid() . " 消息:{$msg}" . PHP_EOL;
} , $child);
} else {
// 子進(jìn)程
fclose($pair[1]);
$parent = $pair[0];
fwrite($parent , "子進(jìn)程問候 " . posix_getpid());
Select::addIo($parent , Event::READ , function($ctrl , $socket , $parent) use($parent_pid){
$msg = fread($socket , 65535);
echo "子進(jìn)程領(lǐng)域!子進(jìn)程 " . posix_getpid() . " 當(dāng)前執(zhí)行進(jìn)程 " . posix_getpid() . " 消息:{$msg}\n";
} , $parent);
}
}
產(chǎn)生的進(jìn)程信息:
父進(jìn)程:32140
子進(jìn)程:32141 32142 32143 32144
坑人的結(jié)果:
父進(jìn)程領(lǐng)域!父進(jìn)程 32140 當(dāng)前執(zhí)行進(jìn)程 32142 消息 子進(jìn)程問候 32141
父進(jìn)程領(lǐng)域!父進(jìn)程 32140 當(dāng)前執(zhí)行進(jìn)程 32143 消息 子進(jìn)程問候 32142
父進(jìn)程領(lǐng)域!父進(jìn)程 32140 當(dāng)前執(zhí)行進(jìn)程 32144 消息 子進(jìn)程問候 32143
父進(jìn)程領(lǐng)域!父進(jìn)程 32140 當(dāng)前執(zhí)行進(jìn)程 32140 消息 子進(jìn)程問候 32144
子進(jìn)程領(lǐng)域!子進(jìn)程 32141 當(dāng)前執(zhí)行進(jìn)程 32141 消息 父進(jìn)程問候 32140
子進(jìn)程領(lǐng)域!子進(jìn)程 32142 當(dāng)前執(zhí)行進(jìn)程 32142 消息 父進(jìn)程問候 32140
子進(jìn)程領(lǐng)域!子進(jìn)程 32143 當(dāng)前執(zhí)行進(jìn)程 32143 消息 父進(jìn)程問候 32140
子進(jìn)程領(lǐng)域!子進(jìn)程 32144 當(dāng)前執(zhí)行進(jìn)程 32144 消息 父進(jìn)程問候 32140
這得仔細(xì)分析 for
循環(huán)!
Event::$events
添加子進(jìn)程監(jiān)聽事件,子進(jìn)程平行執(zhí)行。對(duì)產(chǎn)生的第一個(gè)子進(jìn)程來說, Event::$events
為空,所以沒有拷貝到父進(jìn)程的事件。Event::$events
再次添加監(jiān)聽子進(jìn)程事件,此時(shí),對(duì)產(chǎn)生的第二個(gè)子進(jìn)程來說,Event::$events
存在一個(gè)事件!從父進(jìn)程拷貝了一個(gè)事件。Event::$events
再次添加監(jiān)聽子進(jìn)程事件,此時(shí),對(duì)產(chǎn)生的三個(gè)子進(jìn)程來說, Event::$events
存在兩個(gè)事件!從父進(jìn)程拷貝了兩個(gè)事件。Event::$evnets
添加事件,此時(shí),相對(duì)產(chǎn)生的第四個(gè)子進(jìn)程來說,Event::$events
存在三個(gè)事件,從父進(jìn)程拷貝了三個(gè)事件。由上可知,子進(jìn)程實(shí)際也在監(jiān)聽從父進(jìn)程拷貝的事件,如果事件觸發(fā),那么監(jiān)聽該事件的父子進(jìn)程實(shí)際上都會(huì)觸發(fā)。從而出現(xiàn)了令人郁悶的:子進(jìn)程亂入到了父進(jìn)程的領(lǐng)域。
在子進(jìn)程中,把從父進(jìn)程拷貝的事件銷毀即可。
for ($i = 0; $i < 4; ++$i)
{
$pid = pcntl_fork();
if ($pid < 0) {
throw new Exception("創(chuàng)建子進(jìn)程失敗");
} else if ($pid > 0) {
// 父進(jìn)程
Select::addIo( .... );
// ...添加相關(guān)事件
} else {
// 子進(jìn)程
// 銷毀從父進(jìn)程拷貝的事件
Select::clear();
// ....做些什么
}
}
沒有測(cè)過,你試試看
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name www.example.com;
root /data/www/www.example.com;
index index.php index.html index.htm;
location / {
# 這里使用try_files進(jìn)行url重寫,不用rewrite了。
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php($|/) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
json對(duì)象是類數(shù)組的結(jié)構(gòu), 可以用sizeof函數(shù)判斷長度
$data1=json_decode('{"MCVersion":"v1.10.0","JavaVersion":"v1.8","Server":"Linux"}', true);
var_dump($data1);
echo sizeof($data1);
將會(huì)輸出
array(3) {
["MCVersion"]=>
string(7) "v1.10.0"
["JavaVersion"]=>
string(4) "v1.8"
["Server"]=>
string(5) "Linux"
}
3
注意json_decode第二個(gè)參數(shù)要用true, 將返回array類型,可以用sizeof, 否則將返回stdClass.
區(qū)分端口就行了
代碼:
$arr = [
['value' => '顏色', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['白色','黑色']],
['value' => '包裝', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['大','小']],
['value' => '規(guī)則', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['1','2']]
];
function decare($arr){
$data = [];
$res = [];
for ($i=0; $i < count($arr)-1; $i++) {
if($i == 0){
$data = $arr[$i]['detail'];
}
//替代變量1
$rep1 = [];
foreach ($data as $v) {
foreach ($arr[$i+1]['detail'] as $g) {
//替代變量2
$rep2 = ($i!=0?'':$arr[$i]['value']."_").$v."-".$arr[$i+1]['value']."_".$g;
$tmp[] = $rep2;
if($i==count($arr)-2){
foreach (explode('-', $rep2) as $k => $h) {
//替代變量3
$rep3 = explode('_', $h);
//替代變量4
$rep4['detail'][$rep3[0]] = $rep3[1];
}
$res[] = $rep4;
}
}
}
$data = $tmp;
}
return [$data,$res];
}
print_r(decare($arr)[1]);
結(jié)果:
$config = [
//others
'modules' => [
'debug' => [
'class' => 'yii\debug\Module',
],
'gii' => [
'class' => 'yii\gii\Module',
];
],
//others
]
class yii\base\Application extends yii\base\Module
class yii\base\Module extends yii\di\ServiceLocator
class yii\di\ServiceLocator extends yii\base\Component
class yii\base\Component extends yii\base\Object
public function __construct($config = [])
{
Yii::$app = $this;
//將\yii\base\Application中的所有的屬性和方法交給Yii::$app->loadedModules數(shù)組中
static::setInstance($this);
$this->state = self::STATE_BEGIN;
//加載配置文件的框架信息 如:設(shè)置別名,設(shè)置框架路徑等等最為重要的是給加載默認(rèn)組件
$this->preInit($config);
//加載配置文件中的異常組件
$this->registerErrorHandler($config);
// 調(diào)用父類的 __construct。
// 由于Component類并沒有__construct函數(shù)
// 這里實(shí)際調(diào)用的是 `yii\base\Object__construct($config)`
Component::__construct($config);
}
Component::__construct($config)
會(huì)調(diào)用 yii\base\Object::__construct()
方法public function __construct($config = [])
{
if (!empty($config)) {
// 將配置文件里面的所有配置信息賦值給Object。
// 由于Object是大部分類的基類,
// 實(shí)際上也就是有配置信息賦值給了yii\web\Application的對(duì)象
Yii::configure($this, $config);
}
$this->init();
}
'components' => [ 'log' => [...]]
從哪來,若不關(guān)心可以直接看 第二步。$this->preInit($config);
,即 yii\base\Application::preInit(&$config)
public function preInit(&$config)
{
//others...
// merge core components with custom components
// 合并核心組件和自定義組件
foreach ($this->coreComponents() as $id => $component) {
if (!isset($config['components'][$id])) {
// 若自定義組件中沒有設(shè)置該核心組件配置信息,直接使用核心組件默認(rèn)配置
$config['components'][$id] = $component;
} elseif (is_array($config['components'][$id]) && !isset($config['components'][$id]['class'])) {
// 若自定義組件有設(shè)置該核心組件配置信息,但是沒有設(shè)置 'class'屬性,則添加該class屬性
$config['components'][$id]['class'] = $component['class'];
}
}
}
/**
* Returns the configuration of core application components.
* 返回核心應(yīng)用組件的配置
* @see set()
*/
public function coreComponents()
{
return [
// 日志分配器組件
'log' => ['class' => 'yii\log\Dispatcher'],
//others...
];
}
$this->preInit($config);
, 我們得到的 $config
$config = [
'modules' => [
'debug' => [
'class' => 'yii\debug\Module',
],
'gii' => [
'class' => 'yii\gii\Module',
];
],
'components' => [
'log' => [
'class' => 'yii\\log\\Dispatcher',
],
//others...
]
//others...
]
'components' => [ 'log' => [...]]
從哪來yii\base\Object::__construct($config = [])
中的 Yii::configure($this, $config);
public static function configure($object, $properties)
{
// 只是遍歷配置信息,賦值給當(dāng)前對(duì)象
foreach ($properties as $name => $value) {
$object->$name = $value;
}
return $object;
}
yii\base\Object::__set($name, $value)
/**
* 為實(shí)例不存在的屬性賦值時(shí)調(diào)用
*
* Do not call this method directly as it is a PHP magic method that
* will be implicitly called when executing `$object->property = $value;`.
* 這個(gè)是PHP的魔術(shù)方法,會(huì)在執(zhí)行 `$object->property = $value;` 的時(shí)候自動(dòng)調(diào)用。
*/
public function __set($name, $value)
{
// setter函數(shù)的函數(shù)名
// 由于php中方法名稱不區(qū)分大小寫,所以setproperty() 等價(jià)于 setProperty()
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
// 調(diào)用setter函數(shù)
$this->$setter($value);
} elseif (method_exists($this, 'get' . $name)) {
// 如果只有g(shù)etter沒有setter 則為只讀屬性
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
} else {
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
}
當(dāng)前情景下的 $object
我們可以認(rèn)為是 yii\base\Application
的對(duì)象 $app
$app->modules = [
'debug' => [
'class' => 'yii\debug\Module',
],
'gii' => [
'class' => 'yii\gii\Module',
];
]
這里會(huì)調(diào)用 yii\base\Module::setModules($modules)
方法
public function setModules($modules)
{
foreach ($modules as $id => $module) {
$this->_modules[$id] = $module;
}
}
這樣便有了問題中的
["_modules":"yii\base\Module":private]=>
array(3) {
["debug"]=> object(yii\debug\Module)#33 (28) {
......
}
["gii"]=> object(yii\gii\Module)#113 (21) {
......
}
...
}
$app->components = [
'log' => [
'class' => 'yii\\log\\Dispatcher',
],
]
yii\di\ServiceLocator::setComponents($components)
方法public function setComponents($components)
{
foreach ($components as $id => $component) {
$this->set($id, $component);
}
}
public function set($id, $definition)
{
// others ...
if (is_object($definition) || is_callable($definition, true)) {
// an object, a class name, or a PHP callable
$this->_definitions[$id] = $definition;
} elseif (is_array($definition)) {
// 定義如果是個(gè)數(shù)組,要確保數(shù)組中具有 class 元素
// a configuration array
if (isset($definition['class'])) {
// 定義的過程,只是寫入了 $_definitions 數(shù)組
$this->_definitions[$id] = $definition;
} else {
throw new InvalidConfigException("The configuration for the \"$id\" component must contain a \"class\" element.");
}
} else {
throw new InvalidConfigException("Unexpected configuration type for the \"$id\" component: " . gettype($definition));
}
}
這樣便有了問題中的
["_definitions":"yii\di\ServiceLocator":private]=>
array(24) {
["errorHandler"]=> .....
["request"]=> ......
["log"]=> ......
......
}
原來在thinkphp5下的Model.php實(shí)現(xiàn)了JSON 序列化接口, 調(diào)用了Model.php的toArray方法,所以json_encode才會(huì)輸出這樣的數(shù)據(jù)出來.
實(shí)現(xiàn) JsonSerializable 的類可以在 json_encode() 時(shí)定制他們的 JSON 表示
// JsonSerializable
public function jsonSerialize()
{
return $this->toArray();
}
參考資料:
JSON 序列化接口
$num = $startotal['startotal']/$selecttotal;
echo is_nan($num) ? 0 : $num;
@if (isset($uid)) {}
由此可以猜測(cè)應(yīng)該是瀏覽器的某個(gè)機(jī)制的問題導(dǎo)致了這個(gè)問題
解決方法:可以試一下完全退出瀏覽器程序后再重新打開訪問
樓主CURL構(gòu)建沒有問題,那么建議以下檢查一下
Request
的Content-Type
,這里是有需求設(shè)置為application/json
嗎?其實(shí)不重要哈Authorization
的前綴約束是否一致,可多做嘗試或深讀文檔當(dāng) nginx 匹配不到任何 server 規(guī)則的時(shí)候,會(huì)默認(rèn)采用第一條 server 配置。
所以,你可以在最前面加一個(gè)空的 server 就可以了。
server {
listen 80 ;
server_name _;
return 403;
}
Set
什么時(shí)候是不能修改的了 ?
圖二 ,服務(wù)器端PHP版本過高,因?yàn)樵赑HP7中已經(jīng)完全移除了mysql_*
系列函數(shù),導(dǎo)致函數(shù)不存在錯(cuò)誤。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。