-
各位开发者好,以下为最终统计的完成1天打卡开发者名单(也可下载附件查看)公示期:7月22日-7月27日码豆已发放,每人500码豆,请各位开发者去会员中心查看。https://devcloud.huaweicloud.com/bonususer/home/converge以下用户可能因改过华为云账号,导致发放失败,请于8月4日前联系群内小助手解决,逾期视作放弃哦,谢谢Leroy26傲曳人都怪好看长腿企鹅苏打气泡水奖励说明:我们会在公示期结束后对所有完成1天打卡用户进行奖励。(必须完成第1天打卡)奖品每人500码豆,发放上限20w码豆,前400人将会得到奖励。为了确保您顺利获得码豆,请先点击下方链接登录一次会员中心。https://devcloud.huaweicloud.com/bonususer/home/converge问题反馈说明:因本次活动部分开发者没有按照要求的格式打卡或者中途改过账号/昵称,所以有可能有遗漏,如有问题请开发者先不要激动,请联系群内小助手核实,超过公示期不再进行名单修改。望周知!!!小助手二维码:完成1天打卡名单(必须完成第1天打卡)昵称滴滴12138khg305387543Epoch.永恒的传说小航kiosko加油O幸福xltv哈哈哈菜呢kricoladu鸿琉米光量子Jack20雨幕杏仁yue石榴楠黄伟欢测试人员001cnfox0273是慢慢啊北冰洋.xiaobin8325咚咚咚咚咚咚caibyanyd_213994579是77呀!Sogoodeholo.yhlevi_viDevFeng叶辉sumingweb邓亮jill.mapan王者不在RPA学习交流感到MxA小灰灰1314hw0224张辉小小啦啦crazy_ljy是安可啊湬黍丧心病狂的雷克斯大人Olim1026笨笨2020蓝色橡树BK07idbaf_大掌柜yangfei91轩-x考过IE励志当攻城狮vlean01好久没出门yd_216885343喜悦温暖平静xssl0518没想好叫什么那李熙然yd_251873816繁依FanyiZootopiahw53863158yxshuibizi丹丹周多米诺的古牌zhangbo风路01谢家三少zekeloveGodLIke小影的旅途cupidhwmr0ya1_HUCHIAhhhhhF.T.Dwakaka_huawei随便到无语Bosx腾腾腾飞H、yd_278050186bluua1ALLEN-ZAniaArchive胜林hw58720111老码农mufengyaKatharine_X柚子皮啊likuannatieburg魔芋结阿弥陀佛KarryCould千江有水千江月hw43624871jinghenghengSdll黄狗狗真蒸汽鸿钧三清CarinaM壹贰叁martinzhuwangzunValenCheng胡琦lyz0699清风2打卡作业 Eon.gavinhall小小2018傻徒弟哦Mietteinhuawei禄仁恝lwq1228boxulinxuejiaHealsko慵懒ftbjlhappy00huangwt2010zxcjyd_77520685yd_219973012ypmilyLeon廖梦浩Jun昭小NNHelmondM_Taoboyce什么名字gerayhunkarcyongHello Diggeryd_290241179stylitewalkwiki打卡,学习Noipmahcfanny1210李子木蜡笔不辣吃的TenTwogltzglalan97zhaolann云中新秀HB1688ss_1122BCSmart腾foreverlightmocmocjxy小馨leilei123hw21591385Richard_zhangjianklompenlzqzmtsuiw7k神雷神VeryYoung孙小北赞赞赞赞赞%%yd_272618976anselmiao若无心迷糊zhoujiesesG-washingtonctabaabbzz爹Neil_Z打卡day1user_beifengJaneConanJk.Theseus阿媛yywuyicom魔芋666尛马kokolinpenguin_xiacyber-pix杨中敏Ethin傲曳人路人甲乙长腿企鹅专念阿弥陀佛小小火都怪好看wei生道wolfandy星斗苍凉bahoo陈家老五lu_zhishenLynnWangnukinsano0龙龙0odetaarray_linseewo小鲜wujiejieRayel路明军yujingv龙腾虎跃12138Nemo Nobody打哈哈hw47716223Lorna Houyd_259650523John2021Robin唔系肉饼Bryce_lxgeyeeUFO2021RPA_Zoe宛若溪流风火轮晴空1Leroy26zilongVian_1109快乐的苹果KenLiang荠菜L606有闲王员外sam2020tt动力推动咚咚锵nszb85200515Lychi清吾zzsfreedomzzp0617秦武亮0太过极端roger.lin望尽天涯路蓝瘦的蜕变hid_briem62bqmfdx9t超人1carl peng頭文字Cwebclubcode edgewwwinston风晴月resoundMingzyxucp醉卧独钓wayneleewang黄生花溪HouzRabbitCloud不会写代码的开发jikyousmilepkoray布拉没有格lihuan2008a苏打气泡水yzxcode edge
-
我们首先来了解下什么是上下文。在我们写文章,写句子时,都会考虑一个观点或者内容的前后逻辑,转承启合,而在这个观点前后的内容就可以看成是它的上下文内容。它包含了语境的意味在里面,其实代码世界中的上下文也是一样的意思,本身 Context 这个单词就是环境、背景的意思。接下来,我们来说说请求上下文又是什么呢?比如说我们要使用PHP来请求一个链接地址,通常我们会使用 curl 来进行请求,但是 curl 的配置其实是比较复杂的,所以我们在简单使用的情况下会使用 file_get_contents() 这种函数来快捷地请求链接。不过,可能很多人并不知道或者说没怎么使用过它的上下文参数。其实,使用了上下文参数之后,file_get_contents() 不仅可以提交 POST 请求,还可以定义各种请求头内容。这些东西,就是一个请求的上下文,也就是它的执行环境和背景。首先,我们定义一个服务端,在这里只是输出 \_GET 和 和_POST 里面的内容。同时,我们还打印了 $_SERVER 来看看请求头是否获取到了。123456789101112print_r($_SERVER); echo 'GET INFO', PHP_EOL;foreach ($_GET as $k => $v) { echo $k, ': ', $v, PHP_EOL;} echo PHP_EOL,PHP_EOL;echo 'POST INFO', PHP_EOL;foreach ($_POST as $k => $v) { echo $k, ': ', $v, PHP_EOL;}接下来,在我们的测试代码中,使用 file_get_contents() 来进行 POST 提交。12345678910111213141516171819$postdata = http_build_query( [ 'var1' => 'some content', 'var2' => 'doh', ]); $opts = [ 'http' => [ 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata, ],]; $context = stream_context_create($opts);$result = file_get_contents('http://localhost:8088/?a=1', false, $context);print_r($result);var_dump($http_response_header);在这里,我们只是用到了 stream_context_create() ,就能够轻松地创建一个请求的上下文环境了。stream_context_create() 是创建上下文环境的函数,它接收的参数是一个选项数组,里面用于定义当前请求的相关选项。注意,我们这里其实定义的是 http/https 相关的选项,它还可以定义 ftp 、 socket 等相关的请求协议选项。在使用 file_get_contents() 函数请求远程地址后,我们可以在 $http_response_header 变量内获取到请求返回的响应头信息。而且这个变量是会定义在当前的局部作用域下,不用担心全局作用域污染的问题。非常简单的方式就可以实现 POST 请求了吧,另外我们还可以使用 fopen() 函数来实现类似的效果,不过获取 body 和响应应信息时的方式就不同了。12345678910111213141516171819$url = "http://localhost:8088/?a=1"; $opts = [ 'http' => [ 'method' => 'GET', 'max_redirects' => '0', 'ignore_errors' => '1', ],]; $context = stream_context_create($opts);$stream = fopen($url, 'r', false, $context); // 返回响应头var_dump(stream_get_meta_data($stream)); // 返回内容var_dump(stream_get_contents($stream));fclose($stream);在这段代码中,我们使用 stream_get_meta_data() 函数来获得响应头,使用 stream_get_contents() 来获得响应的内容(body)。这样其实就真的和 curl 的效果差不多了,而且最主要的是,当前这种写法更简单方便。
-
什么是引用?在 PHP 中引用意味着用不同的名字访问同一个变量内容。它不是C的指针,保存的并不是内存地址,无法进行指针运算。引用只是符号表的别名。就像 Unix 系统中的硬链接, Windows 系统中的快捷方式。上面是官方手册中的原文,怎么说呢,引用其实和我们印象中的C里面的指针并不是相同的概念。指针是针对真实内存的操作,引用是针对指向这个内存的符号表的操作。还是从操作系统的快捷方式来说,快捷方式是可以删的,这就是PHP的引用。而C不仅删了快捷方式,还把原文件也给删了,这就是C的指针操作。// 引用不是指针 $a = 1; $b = &$a; echo $a, '===', $b, PHP_EOL; unset($b); echo $a, '===', $b, PHP_EOL;上面的代码是在PHP中,我们把b变量指向b变量指向a,作为a的引用变量。然后删除a的引用变量。然后删除b,对$a没有任何影响。#include <stdio.h> #include <stdlib.h> int main() { // C 中的指针和引用 int a = 1; int* b = &a; printf("%i\n", a); // 1 free(b); // free b printf("%i\n", a); //get error: *** error for object 0x7fff6350da08: pointer being freed was not allocated return 0; }而C中的引用指针就不行了,我们把b变量删掉后,再打印a变量就直接报错了。虽然说PHP的底层也是C写得,但我们都知道C中的指针是出了名的变态,没有一定的功底非常容易出错。所以PHP的开发者没有暴露C的原始指针能力,而是采用了和Java之类的类似的引用能力。这也是现代语言的特性,不需要我们过多的关注过于底层的能力,而将更多的时间放在业务实现上。引用在数组和对象中的使用如果具有引用的数组被拷贝,其值不会解除引用。对于数组传值给函数也是如此。$arr1 = ["a", "b"]; $t1 = &$arr1[1]; $arr2 = $arr1; $arr2[1] = "c"; var_dump($arr1); // array(2) { // [0]=> // string(1) "a" // [1]=> // &string(1) "c" // } $arr1 = ["a", "b"]; $t1 = &$arr1[1]; unset($t1); // unset 掉引用 $arr2 = $arr1; $arr2[1] = "c"; var_dump($arr1); // array(2) { // [0]=> // string(1) "a" // [1]=> // string(1) "b" // }这个其实挺有意思的,我们对比这两个例子可以看出一个问题,t变量指向t变量指向arr[1]的引用。arr2直接=这个arr2直接=这个arr1,没有使用引用,然后arr2修改了arr2修改了arr2[1]的内容,arr1相应的内容也发生了改变,如果unset掉arr1相应的内容也发生了改变,如果unset掉t变量,则$arr1相应的内容就不会发生改变。对此,我在文档中找到了下面的解释:由于PHP内部工作的特殊性,如果对数组的单个元素进行引用,然后复制数组,无论是通过赋值还是通过函数调用中的值传递,都会将引用复制为数组的一部分。这意味着对任一数组中任何此类元素的更改都将在另一个数组(和其他引用中)中重复,即使数组具有不同的作用域(例如,一个是函数内部的参数,另一个是全局的)!在复制时没有引用的元素,以及在复制数组后分配给其他元素的引用,将正常工作(即独立于其他数组)。不仅仅是数组,对象的引用也会有一些好玩的问题。$o1 = new stdClass(); $o1->a = 'a'; var_dump($o1); // object(stdClass)#1 (1) { // ["a"]=> // string(1) "a" // } $o2 = &$o1; $o3 = $o1; $o2->a = 'aa'; var_dump($o1); // object(stdClass)#1 (1) { // ["a"]=> // string(2) "aa" // } var_dump($o3); // $o2修改了$a为'aa',$o3也变成了'aa' // object(stdClass)#1 (1) { // ["a"]=> // string(2) "aa" // } $o1->a = 'aaa'; $o1 = null; var_dump($o2); // $o2引用变成了null // NULL var_dump($o3); // $o3不仅引用还存在,并且$a变成了'aaa' // object(stdClass)#1 (1) { // ["a"]=> // string(3) "aaa" // }上面例子中有三个对象,o1、o1、o2、o3,其中,o3,其中,o2是对o1的引用,o1的引用,o3是直接赋值为o1。对o1。对o2属性的操作不仅会反映在o1中,也会反映到o1中,也会反映到o3中。其实我们之前专门有一篇文章就讲的这个问题,首先对象默认赋值就是引用,其次这个例子很好地证明了引用就是一个符号表的绑定。删除了快捷方式对原始对象和其他快捷方式没有任何影响。引用的传递关于引用在方法参数上的传递,最重要的是记住两点:一是方法内部修改了变量外部也会变,这是引用的特性嘛;二是只能传递变量、New 语句、从函数中返回的引用三种类型。error_reporting(E_ALL); function foo(&$var) { $var++; echo 'foo:', $var; } function bar() // Note the missing & { $a = 5; return $a; } foo(bar()); // 自 PHP 5.0.5 起导致致命错误,自 PHP 5.1.1 起导致严格模式错误 // 自 PHP 7.0 起导致 notice 信息,Notice: Only variables should be passed by reference foo($a = 5); // 表达式,不是变量, Notice: Only variables should be passed by reference // foo(5); // 导致致命错误 !5是个常量! /////////////////////////////// // 正确的传递类型 $a = 5; foo($a); // 变量 function &baz() { $a = 5; return $a; } foo(baz()); // 从函数中返回的引用 function foo1(&$var) { print_r($var); } foo1(new stdClass()); // new 表达式引用的返回引用的返回并不是经常使用的一个能力。文档中的原文是:不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!$a = 1; function &test(){ global $a; return $a; } $b = &test($a); $b = 2; echo $a, PHP_EOL;当你想要返回一个引用变量的时候,一定要给方法定义和方法调用的时候都使用&符号。这个是需要注意的点。当其他地方修改原本的变量值或者返回的变量值经过修改后,都会影响到所有调用这个值的地方。所以说,引用的返回是比较危险的,因为你不清楚什么时候在什么地方这个值可能发生了修改,对于bug的排查会非常困难。引用的取消取消引用其实就是直接unset掉变量就可以了。但是一定要记住,PHP中的引用是指向的符号表,对原始真实的值是不起作用的,所以即使unset掉了最原始的那个变量,对其它引用赋值的变量也不会有影响!!$a = 1; $b = &$a; $c = &$b; $b = 2; echo '定义引用后:', $a, '===', $b, '===', $c, PHP_EOL; unset($b); $b = 3; echo '取消$b的引用,不影响$a、$c:', $a, '===', $b, '===', $c, PHP_EOL; $b = &$a; unset($a); echo '取消$a,不影响$b、$c:', $a, '===', $b, '===', $c, PHP_EOL; // 定义引用后:2===2===2 // 取消$b的引用:2===3===2 // 取消$a,不影响$c:===3===2 $a = 1; $b = & $a; $c = & $b; // $a, $b, $c reference the same content '1' $a = NULL; // All variables $a, $b or $c are unset echo '所有引用成空:', $a, '===', $b, '===', $c, PHP_EOL;
-
在OBS怎么使用PHP判断对象是否存在?
-
已经完成openEluer、openGuass、ODBC、PHP的安装与配置。直接通过命令行的方式执行PHP脚本可以获取数据。通过浏览器访问时出现错误,内容如下:Fatal error: Uncaught PDOException: SQLSTATE[01000] SQLDriverConnect: 0 [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/psqlodbcw.so' : file not found in /var/www/html/index1.php:3 Stack trace: #0 /var/www/html/index1.php(3): PDO->__construct('odbc:Driver={Ga...', 'monitor', 'pwd@1212') #1 {main} thrown in /var/www/html/index1.php on line 3请帮忙看看吧,谢谢!!!
-
1、安装PHP在openEuler上是可以用yum install 安装PHP 以及php-fpm的,这里还需要安装php-devel,后面会用到yum install php php-fpm php-devel安装完成之后,我们查看当前php自带的扩展包php -m2、安装imagick扩展下载源码wget http://pecl.php.net/get/imagick-3.4.3.tgz解压安装tar -xzvf imagick-3.4.3.tgz cd imagick-3.4.3 phpize ./configure make && make install安装完成后,会打印出安装的路径,到路径下看一下,是否以及存在so文件更改php.ini加入so文件vi /etc/php.ini在末尾加入extension = imagick.so重启php,查看扩展包service php-fpm restart可以看到扩展包已经成功安装3、安装redis扩展安装redis扩展需要先安装json扩展,直接yum 安装即可 yum install php-json下载源码wget https://pecl.php.net/get/redis-5.0.0.tgz解压安装,与上面类似tar -xzvf redis-5.0.0.tgz cd redis-5.0.0 phpize ./configure make && make install安装完成后查看so文件是否存在更改php.ini加入so文件vi /etc/php.ini在末尾加入,这里要注意,一定要把json放在redis前面,否则会报错extension = json extension = redis.so重启php,查看扩展包service php-fpm restartok了!
-
1. 封装MongoDB类<?php class MongoDB { private $database; private $mongo; function __construct() { $this->mongo = new MongoClient("mongodb://user:password@server_address:port/admin"); $this->database = $this->mongo->selectDB("data"); } { return $this->database->selectCollection($collection); } //获取所有的集合名 function getCollections() { return $this->database->getCollectionNames(); } //选数据库 function selectDB($db) { $this->database = $this->mongo->selectDB($db); } } 2. 简单调用,insert数据。class DemoController extends CI_Controller { function __construct() { parent::__construct(); //CI中加载类 $this->load->library('mongo_lib', '', 'mongodb'); } //插入一条数据 function create() { $data = array('name'=>'mike','email'=>'abc@163.com); //选择库,shell:user demo_db $this->mongodb->selectDB('demo_db'); //选择集合,db.demo_col.insert(); $rebateCollection = $this->mongodb->getCollection('demo_collection'); $res = $rebateCollection->insert($data); } }
-
Mysqli是php5之后才有的功能,没有开启扩展的朋友可以打开您的php.ini的配置文件。查找下面的语句:;extension=php_mysqli.dll将其修改为:extension=php_mysqli.dll即可。相对于mysql有很多新的特性和优势(1)支持本地绑定、准备(prepare)等语法(2)执行sql语句的错误代码(3)同时执行多个sql(4)另外提供了面向对象的调用接口的方法。下面一一用php实例进行mysqli数据库连接!使用方法一:使用传统的面向过程的方法php代码如下: <?php $connect = mysqli_connect('localhost','root','','volunteer') or die('Unale to connect'); $sql = "select * from vol_msg"; $result = mysqli_query($connect,$sql); while($row = mysqli_fetch_row($result)){ echo $row[0]; } ?> 使用方法二:使用面向对象的方法调用接口(推荐使用)看php代码如下: <?php //创建对象并打开连接,最后一个参数是选择的数据库名称 $mysqli = new mysqli('localhost','root','','volunteer'); //检查连接是否成功 if (mysqli_connect_errno()){ //注意mysqli_connect_error()新特性 die('Unable to connect!'). mysqli_connect_error(); } $sql = "select * from vol_msg"; //执行sql语句,完全面向对象的 $result = $mysqli->query($sql); while($row = $result->fetch_array()){ echo $row[0]; } ?> 以上两个php实例运行的结果完全相同,可以清楚的看到使用mysqli类对象构建数据库连接的优势!
-
实例: <?php $conn1 = mysql_connect("127.0.0.1", "root","root","db1"); mysql_select_db("db1", $conn1); $conn2 = mysql_connect("127.0.0.1", "root","root","db2"); mysql_select_db("db2", $conn2); $sql = "select * from ip"; $query = mysql_query($sql); if($row = mysql_fetch_array($query)) echo $row[0]."\n"; $sql = "select * from web "; $query = mysql_query($sql); if($row = mysql_fetch_array($query)) echo $row[0]; ?> 这段代码存在问题,在程序执行时会报错:PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ....原因分析:程序开始建立两个数据库链接,函数mysql_query()原型:resource mysql_query ( string $query [, resource $link_identifier ] )向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。如果没有指定 link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用 mysql_connect() 函数来建立一个连接并使用之。查询结果会被缓存。在本例中由于没有指定link_identifier,所以,在执行第一条sql时,默认使用的是上一个打开的链接,即$conn2,而实际上第一条sql语句应该使用的是$conn1,所以导致报错,所以为了能够链接多个mysql数据库,可以使用如下方法:方法1:在mysql_query函数中指定所用连接,即: <?php $conn1 = mysql_connect("127.0.0.1", "root","root","db1"); mysql_select_db("Muma", $conn1); $conn2 = mysql_connect("127.0.0.1", "root","root","db2"); mysql_select_db("product", $conn2); $sql = "select * from ip"; $query = mysql_query($sql,$conn1); //添加连接$conn1 if($row = mysql_fetch_array($query)) echo $row[0]."\n"; $sql = "select * from web "; $query = mysql_query($sql, $conn2); if($row = mysql_fetch_array($query)) echo $row[0]; ?> 方法2:在sql语句中关联所用数据库,此时可以省略mysql_query的第二个参数,即: <?php $conn1 = mysql_connect("127.0.0.1", "root","root","db1"); mysql_select_db("db1", $conn1); $conn2 = mysql_connect("127.0.0.1", "root","root","db2"); mysql_select_db("db2", $conn2); $sql = "select * from db1.ip"; //关联数据库 $query = mysql_query($sql); if($row = mysql_fetch_array($query)) echo $row[0]."\n"; $sql = "select * from db2.web "; $query = mysql_query($sql); if($row = mysql_fetch_array($query)) echo $row[0]; ?>
-
【功能模块】【php插件】缺少以下插件php-imapphp-pearphp-pecl-redisphp-pecl-igbinary【操作步骤&问题现象】1、dnf 官方源安装:[root@hw-kp ~]# dnf install --allowerasing --nobest --skip-broken php-embedded php-ldap php-pdo php-process php-cli php-devel php-fpm php-imap php-mbstring php-opcache php-pear php-pecl-redis php-snmp php-xml php-gd php-common php-mysqlnd php-pecl-igbinary php-soap -yLast metadata expiration check: 0:09:10 ago on Tue 13 Apr 2021 04:34:37 PM CST.Package php-embedded-7.2.10-3.oe1.aarch64 is already installed.Package php-ldap-7.2.10-3.oe1.aarch64 is already installed.Package php-pdo-7.2.10-3.oe1.aarch64 is already installed.Package php-process-7.2.10-3.oe1.aarch64 is already installed.Package php-cli-7.2.10-3.oe1.aarch64 is already installed.Package php-devel-7.2.10-3.oe1.aarch64 is already installed.Package php-fpm-7.2.10-3.oe1.aarch64 is already installed.No match for argument: php-imapPackage php-mbstring-7.2.10-3.oe1.aarch64 is already installed.Package php-opcache-7.2.10-3.oe1.aarch64 is already installed.No match for argument: php-pearNo match for argument: php-pecl-redisPackage php-snmp-7.2.10-3.oe1.aarch64 is already installed.Package php-xml-7.2.10-3.oe1.aarch64 is already installed.Package php-gd-7.2.10-3.oe1.aarch64 is already installed.Package php-common-7.2.10-3.oe1.aarch64 is already installed.Package php-mysqlnd-7.2.10-3.oe1.aarch64 is already installed.No match for argument: php-pecl-igbinaryPackage php-soap-7.2.10-3.oe1.aarch64 is already installed.Dependencies resolved.Nothing to do.Complete!2、以下为官方 yum 源:[root@hw-kp ~]# cat /etc/yum.repos.d/openEuler_aarch64.repo#generic-repos is licensed under the Mulan PSL v2.#You can use this software according to the terms and conditions of the Mulan PSL v2.#You may obtain a copy of Mulan PSL v2 at:# http://license.coscl.org.cn/MulanPSL2#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR#PURPOSE.#See the Mulan PSL v2 for more details.[OS]name=OSbaseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/$basearch/enabled=1gpgcheck=1gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler[everything]name=everythingbaseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/$basearch/enabled=1gpgcheck=1gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler[EPOL]name=EPOLbaseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/$basearch/enabled=1gpgcheck=1gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler[debuginfo]name=debuginfobaseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/debuginfo/$basearch/enabled=1gpgcheck=1gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/debuginfo/$basearch/RPM-GPG-KEY-openEuler[source]name=sourcebaseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/enabled=1gpgcheck=1gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler[update]name=updatebaseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/update/$basearch/enabled=0gpgcheck=1gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
访问上传后的图片地址,会提示下面的错误提示然后看了一下图片只有拥有者才有权限观看,其他的都没有,要在那里去配置呢,我创建桶时桶策略是开启的公共读了的但是其他的用户都没有权限
-
odp安装:创建odp目录 mkdir /home/work/odp使用wget命令下载然后解压安装(在解压目录下找到bin文件,执行odp_install脚本进行安装)odp配置:1)odp服务器有nginx和lighttped,启动方式:nignxsh webserver/loadnginx.sh startsh webserver/loadnginx.sh stoplighttpedsh webserver/bin/lighttped.sh startsh webserver/bin/lighttped.sh stop2)运行环境php-fpm,启动方式:sh php/sbin/php-fmp startODP框架简单介绍odp全称online develop platform,是在线的业务开发平台,提供了标准的webserver环境,标准的PHP环境,MVC框架,统一业务逻辑和部署结构。odp=linux+nignx/lighttped+mysql+phpODP环境目录结构app:应用程序目录,用于放业务php代码,每个业务一个目录;一个典型的app文件夹目录结构newapp 应用名称+-- action 动作类目录+-- conf 配置目录+-- controllers 控制类目录+-- library 本地类根目录+-- models 数据目录 +-- script 脚本目录+-- Bootstrap.php ap框架引导文件+-- build.sh 打包脚本conf:配置目录,用于存放组件和app配置文件log:存放整个odp环境运行中产生的日志文件名称 用途简介webserver/error_log web访问错误日志webserver/access_log web访问记录,该文件记录了客户端对服务器的所有请求,以及请求处理的结果状态码rpc/rpc-request.log.wf 同上. 此文件包含异常调用的日志rpc/rpc-request.log 所有RPC调用日志会在log/rpc目录下. 此文件包含正常调用的日志数据库,服务调用,子系统交互等日志出现在此目录php/php-fpm.log php-fpm的日志php/php-error.log PHP相关的错误日志newapp/newapp.log.wf 同上. 此文件包含WARNING, FATAL级别日志newapp/newapp.log.dt 同上. 此文件包含DEBUG, TRACE级别日志newapp/newapp.log 每一个app执行时都会在log目录下生成一个以app名字命名的目录. 其中根据日志级别设置 , 可能有有三类常见的日志文件. 此文件包含NOTICE级别日志app代码中输出的日志会出现在此目录php:php安装后所在的目录webserve:服务器安装目录,odp支持的服务器有nignx和lighttpedwebroot:默认的web文档目录,一般的项目入口存放此处,该目录下可以存放静态文件,例如js,css,img等文件data:本地文件数据,存放组件和app生成的本机文件缓存等日志级别错误级别 日志类型fatal error日志warning wf日志trace 普通日志debug dt日志
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签