-
支持版本除了庆祝新的版本发布以后,也需要注意一下:PHP 8.0 的生命周期即将结束,PHP 8.0 早已在2022 年 11 月 26 日结束了积极支持,而安全支持也将在 PHP8.3 发布的三天后2023 年 11 月 26 日停止。了解更多信息可查看Supported Versions。新特性PHP 8.3 引入了许多新功能。然而,它的功能比 PHP 8.1 或 PHP 8.2 相对较少。PHP 8.3 的主要新特性:类型化类常量动态类常量获取#[\Override]属性只读修改添加json_validate函数添加Randomizer::getBytesFromString()方法添加Randomizer::getFloat()和Randomizer::nextFloat()方法类型化类常量现在可以在定义常量时,增加类型。 // PHP < 8.3 interface I { // We may naively assume that the PHP constant is always a string const PHP = 'PHP 8.2'; } class Foo implements I { const PHP = []; // But it may be an array... } // PHP 8.3 interface I { const string PHP = 'PHP 8.3'; } class Foo implements I { const string PHP = []; } // Fatal error: Cannot use array as value for class constant Foo::PHP of type string 动态类常量获取在之前的版本中获取类的常量,除了直接调用以外,想要动态获取只能通过拼接后使用constant来实现,而现在可以直接使用变量来获取常量。这个方式在枚举类型中也可以使用。// PHP < 8.3 class Foo { const PHP = 'PHP 8.2'; } $searchableConstant = 'PHP'; var_dump(constant(Foo::class . "::{$searchableConstant}")); // PHP 8.3 class Foo { const PHP = 'PHP 8.3'; } $searchableConstant = 'PHP'; var_dump(Foo::{$searchableConstant});添加#[\Override]属性通过给方法添加 #[\Override] 属性,PHP 将确保在父类或实现的接口中存在同名的方法。添加该属性可以清楚地表明重载父类方法是有意为之,并简化了重构过程,因为重载父类方法的删除会被检测到。// PHP < 8.3 use PHPUnit\Framework\TestCase; final class MyTest extends TestCase { protected $logFile; protected function setUp(): void { $this->logFile = fopen('/tmp/logfile', 'w'); } protected function taerDown(): void { fclose($this->logFile); unlink('/tmp/logfile'); } } // The log file will never be removed, because the // method name was mistyped (taerDown vs tearDown). // PHP 8.3 use PHPUnit\Framework\TestCase; final class MyTest extends TestCase { protected $logFile; protected function setUp(): void { $this->logFile = fopen('/tmp/logfile', 'w'); } #[\Override] protected function taerDown(): void { fclose($this->logFile); unlink('/tmp/logfile'); } } // Fatal error: MyTest::taerDown() has #[\Override] attribute, // but no matching parent method exists只读修改只读属性现在可以在魔术方法 __clone 方法中修改一次,以实现只读属性的深度克隆。// PHP < 8.3 readonly class Foo { public \DateTime $dateTime; function __construct(\DateTime $dateTime) { $this->dateTime = $dateTime; } public function __clone() { $this->dateTime = clone $this->dateTime; } } $today = new Foo(new \DateTime()); $tomorrow = clone $today; // Fatal error: Cannot modify readonly property Foo::$dateTime // PHP 8.3 readonly class Foo { public \DateTime $dateTime; function __construct(\DateTime $dateTime) { $this->dateTime = $dateTime; } public function __clone() { $this->dateTime = clone $this->dateTime; } } $today = new Foo(new \DateTime()); $tomorrow = clone $today; $tomorrow->dateTime->modify('+1 day');添加json_validate函数在之前的版本中想要验证一个字符是否是语法上有效的JSON,需要先decode然后判断错误码,而现在可以直接调用json_validate函数。同时 json_validate() 性能比 json_decode() 要好不少,并且使用更加简单。// PHP < 8.3 function json_validate(string $string): bool { json_decode($string); return json_last_error() === JSON_ERROR_NONE; } var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true // PHP 8.3 var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true一次 Lint 多个文件PHP CLI 二进制文件的 -l 允许检查 PHP 文件以确保它没有语法错误。以前只允许一次检查一个文件,这意味着如果想检查整个项目,则必须为每个应用程序文件调用一次它。从 PHP 8.3 开始允许传递多个文件。// PHP < 8.3 php -l index.php // PHP 8.3 php -l src/**/*.php
-
🚀一、前言 在开发Web应用程序中,我们经常需要从网络上获取图片并对其进行处理。有时候,我们可能需要知道图片的长宽和类型信息,以便进行进一步的操作或展示给用户。在PHP中,我们可以使用getimagesize()函数来获取网络图片的长宽和类型信息。 🚀二、实现逻辑 🔎2.1 getimagesize()函数简介 getimagesize()是一个内置函数,用于获取图片的各种属性信息,包括宽度、高度、类型等。该函数可以对本地图片文件或通过URL访问的网络图片进行操作。在本文中,我们将重点介绍如何使用该函数获取网络图片的信息。 🔎2.2 获取网络图片信息的步骤 下面是使用PHP获取网络图片信息的具体步骤: 🍁2.2.1 第一步:获取网络图片的地址 首先,我们需要获取网络图片的地址。假设我们要获取的网络图片地址为https://example.com/image.jpg。 🍁2.2.2 第二步:使用getimagesize()函数获取图片信息 接下来,我们使用getimagesize()函数来获取图片的信息。将网络图片地址作为参数传递给getimagesize()函数,并将返回的结果保存在一个变量中。 $imageUrl = "https://example.com/image.jpg"; $imageInfo = getimagesize($imageUrl); 🍁2.2.3 第三步:提取图片的长、宽和类型 getimagesize()函数返回的结果是一个数组,其中包含了图片的属性信息。我们可以通过索引来访问这些信息。 $imageWidth = $imageInfo[0]; $imageHeight = $imageInfo[1]; $imageMime = $imageInfo['mime']; 🍁2.2.4 第四步:打印结果或进行其他操作 最后,我们可以直接打印出获取到的图片信息,或根据需要进行进一步处理。例如,我们可以将获取到的图片信息展示给用户,或根据图片类型进行相应的处理。 echo "图片宽度:".$imageWidth."px<br>"; echo "图片高度:".$imageHeight."px<br>"; echo "图片类型:".$imageMime; 🚀三、 完整示例代码 下面是获取网络图片信息的完整代码示例: $imageUrl = "https://www.xxx.com/demo.jpg"; $imageInfo = getimagesize($imageUrl); $imageWidth = $imageInfo[0]; $imageHeight = $imageInfo[1]; $imageMime = $imageInfo['mime']; echo "图片宽度:".$imageWidth."px<br>"; echo "图片高度:".$imageHeight."px<br>"; echo "图片类型:".$imageMime; 以上就是使用PHP获取网络图片长宽和类型信息的步骤和代码。 🚀四、演示 下面使用真实的一个图片来演示一下上面的代码。 看到输出如下: 🚀五、 总结 在本文中,我们介绍了如何使用PHP获取网络图片的长宽和类型信息。通过使用getimagesize()函数,我们可以轻松地获取到网络图片的各种属性信息,提供更好的用户体验或进行进一步的处理操作。这个功能非常有用,在开发Web应用程序时经常会遇到。希望本文对大家有所帮助! ———————————————— 版权声明:本文为CSDN博主「黑夜开发者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_21891743/article/details/132466781
-
很多新手刚开始做网站可能感觉不到502,504的问题,当等你网站到达了一定水平的时候,流量起来的时候,你会发现经常会遇到502、504类似的问题。 一、什么是502状态码? 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 二、502 Bad Gateway 原因一般有哪些? 将请求提交给网关如php-fpm执行,但是由于某些原因没有执行完毕导致php-fpm进程终止执行。这个问题与网关服务如php-fpm的配置有关。 php-fpm.conf配置文件中有两个参数就需要你考虑到,分别是max_children和request_terminate_timeout。 max_children最大子进程数,在高并发请求下,达到php-fpm最大响应数,后续的请求就会出现502错误的。可以通过netstat命令来查看当前连接数。 request_terminate_timeout设置单个请求的超时终止时间。还应该注意到php.ini中的max_execution_time参数。当请求终止时,也会出现502错误的。 当积累了大量的php请求,你重启php-fpm释放资源,但一两分钟不到,502又再次呈现,这是什么原因导致的呢? 这时还应该考虑到数据库,查看下数据库进程是否有大量的locked进程,数据库死锁导致超时,前端终止了继续请求,但是SQL语句还在等待释放锁,这时就要重启数据库服务了或kill掉死锁SQL进程了。 三、什么是504状态码? 504 Gateway Time-out:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。 四、504 Gateway Time-out 原因一般有哪些? 504错误一般是与nginx.conf 配置有关。主要与以下几个参数有关: fastcgi_connect_timeout fastcgi_send_timeout fastcgi_read_timeout fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_temp_file_write_size fastcgi_intercept_errors 特别是前三个超时时间。如果fastcgi缓冲区太小会导致fastcgi进程被挂起从而演变为504错误。 五、关于PHP+Nginx经常出现502、504的解决方法 由于不同的原因,解决方法也是不一样的,一定要根据实际的情况去分析。例如,以下是我以前遇到的502的相关问题。 1、Nginx 502 Bad Gateway 原因与解决方法 2、Nginx报错:upstream timed out (110: Connection timed out) 原因与解决方法 今天重点说下我遇到504问题的解决方法。 由于我用的是PHP+Nginx+百度云加速CDN,然后,百度云加速CDN一直给我报504错误,我排查了很多也没有找到原因。 1、最初我以为修改nginx.conf,增加如下“error Connection timed out and 504 error”的代码可以解决这个问题。 [root@localhost /]# vim nginx.confserver { listen 80; server_name zabbix.gree.com; access_log /roobo/logs/nginx/zabbix.gree.com_access.log main; error_log /roobo/logs/nginx/zabbix.gree.com_error.log error ; root /roobo/webserver/zabbix; index index.html index.htm index.php; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri =404; include fastcgi.conf; fastcgi_pass 10.7.19.195:9000; } #error Connection timed out and 504 error large_client_header_buffers 4 16k; client_max_body_size 30m; client_body_buffer_size 128k; fastcgi_connect_timeout 300; fastcgi_read_timeout 300; fastcgi_send_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 32k; fastcgi_busy_buffers_size 64k; fastcgi_temp_file_write_size 64k; } 经过测试,并没有任何效果。 2、我又自信的以为是我用了FirewallD防火墙的原因,结果我关闭它,测试也没有效果,照样报504错误。 3、最后当再出现504错误的时候,我直接暴力操作,杀死php-fpm,再重启,就可以恢复正常,从而我判断是php的问题。经过我的排查,发现是“pm.max_requests”这个参数的问题,我最初设置的是204000,现在设置的是20400即可恢复正常,没有再出现504错误了,平均负载 Load Average也在正常的范围类。 4、但是过一段时间后,又会出现“504连接超时”这个问题。 5、最终,经过我几天的测试,我最终php-fpm.conf参数调整如下即恢复正常: 注意:这里我顺便说一下,我以前配置的参数是 pm.max_spare_servers = 60; pm.max_requests = 204800; pm = dynamic pm.start_servers = 20 pm.min_spare_servers = 20 pm.max_spare_servers = 30 pm.max_requests = 20480 总结: 通俗点讲,设置“pm.max_requests”参数小一点,就是让php-fpm能够自动的频繁重启,关于具体设置多大?要根据你的服务器配置以及流量状况来分析,自己可以去做测试。 经过我的的测试,我发现pm.max_requests设置太大会出现504 Gateway Time-out,pm.max_requests设置太小,平均负载 Load Average又会超出正常值的范围,甚至更高。 ———————————————— 版权声明:本文为CSDN博主「执刀人的工具库」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/winkexin/article/details/130628949
-
【Ansible Roles使用教程:安装Nginx与PHP】 Ansible Roles是一种组织和复用Ansible代码的方法,用于将相关的配置和任务组织在一起,使代码更加模块化和易于管理。在本教程中,我将演示如何使用Ansible Roles来安装Nginx和PHP,并在CentOS 7上部署一个简单的Web服务器。 创建Ansible项目目录结构: 首先,创建一个Ansible项目目录,并在其中创建以下目录结构: ansible-project/ ├── inventory/ │ └── hosts ├── roles/ │ ├── nginx/ │ │ ├── tasks/ │ │ │ └── main.yml │ │ └── templates/ │ │ └── nginx.conf.j2 │ └── php/ │ └── tasks/ │ └── main.yml └── site.yml 编辑hosts文件: 在 inventory/hosts文件中定义要部署Nginx和PHP的目标主机: [web_servers] server1 ansible_host=服务器IP地址 编辑Nginx角色的main.yml文件: 在 roles/nginx/tasks/main.yml文件中定义安装Nginx的任务: --- - name: Install Nginx yum: name: nginx state: present - name: Start Nginx service: name: nginx state: started enabled: yes - name: Copy Nginx configuration file template: src: nginx.conf.j2 dest: /etc/nginx/nginx.conf - name: Restart Nginx service: name: nginx state: restarted 编辑PHP角色的main.yml文件: 在 roles/php/tasks/main.yml文件中定义安装PHP的任务: --- - name: Install PHP yum: name: php state: present - name: Install PHP modules yum: name: "{{ item }}" state: present with_items: - php-fpm - php-mysql - php-gd - php-xml - name: Start PHP-FPM service: name: php-fpm state: started enabled: yes 编辑Nginx配置模板: 在 roles/nginx/templates/nginx.conf.j2文件中定义Nginx的配置模板,可以根据需要自定义Nginx配置。 编辑site.yml文件: 在 site.yml文件中定义整个安装过程,包括目标主机和要安装的角色: --- - name: Install Nginx and PHP hosts: web_servers become: yes roles: - nginx - php 执行部署: 最后,执行部署命令,运行整个Ansible Playbook: ansible-playbook -i inventory/hosts site.yml Ansible将会连接到目标主机并按照定义的Roles顺序安装Nginx和PHP。完成后,你将在目标主机上拥有一个运行Nginx和PHP的简单Web服务器。 通过使用Ansible Roles,你可以更好地组织和管理你的Ansible Playbook,使部署过程更加模块化和可维护。同时,Ansible的自动化能力能够帮助你快速在多台主机上部署相同的配置,提高效率和一致性。 ———————————————— 原文链接:https://blog.csdn.net/tiansyun/article/details/134025613
-
多机部署LNMP是一个很重要的项目,L代表Linux系统,N代表Nginx服务, M代表Mysql服务,P代表PHP服务。LNMP平台应该是应用比较广泛的网站服务架构。随着Nginx在企业中的使用越来越多。LNMP架构也受到越来越多的linux系统工程师的青睐。因此,掌握多级部署LNMP是非常重要的。vim lnmp.sh#!/bin/bash#build lnmp#移除原有的yum仓库,并备份到/root/old目录下[-d /root/old] $$rm-rf /root/old;mkdir /root/old || mkdir /root/oldmv /etc/yum.repos.d/* /root/oldcp -r /root/old/*/etc/yum.repos.d/#更新安装epel源rpm -Uvh https://mirror.webtatic.com/yu,/e17/epel-release.rpmsleep 10#更新安装Centos源rpm -Uvh https://mirror.webtatic.com/yum/e17/webtatic-release.rpmyum clean allyum repolistsleep 10#安装依赖软件包yum -y install openssl-devel gcc-c++ gcc makeecho waiting install php......yum install -y php56w-fpm php56w-common pjp56w-mbstring php56w-mcrypt php56w-pdo php56w-mysqlnd php56w-bcmath php56w-xml php56w-ldap#修改相关配置sed -i 's/post_max_size=8M/post_max_size=16M/g' /etc/php.inised -i 's/max_execution_time=30/max_execution_time=300/g'/etc/php.inised -i 's/max_input_time=60/max_execution_time=300/g/etc/php.ini'sed -i 's/listen,allowed_clients=127.0.0.1/#listen.allowed_clients=127.0.0.1/g'/etc/php-fpm.d/www.conf#启动并设置开机自启动systemctl enable php-fpmsystemctl start pho-fpmsleep 10echo waiting for nginxyum -y install nginxnginx -tnginxsleep 10echo waiting for mysql15.6......[-d /usr/local/src]||mkdir -p /usr/local/srccd/usr/local/srcrpm -Uvh http://dev.mysql.com/get/mysql-community-release -e17-5.noarch.rpmyum repolist all |grep ''mysql.*-community.*''yum -y install mysql-community-serversystemctl enable mysqldsystemctl start mysqld.serviceecho $ip >> passwords.txtawk -F:'/temporary password""/{print $NF}' /var/log/mysqld.log>>passwords.txtsleep3以上是在一台服务器上实现部署LNMP,项目需求是要在多态服务器上实现,其思路和多级部署mysql一样,需要使用shell循环来实现多态机器的LNMP部署。vim ip.txt10.0.104.510.0.104.2710.0.104.3410.0.104.13610.0.104.108#!/bin/bash#mainwhile read ipdo{ping -c 1-w 2 $ ip>/dev/nullif [$?-eq 0];thenscp -r lnmp.sh root@ip:/tmp/ssh root@ip "/tmp/lnmp.sh"}&done <ip.txtwaitecho all finish以上代码是针对ip.txt文件中的主机ip地址进行多机部署LNMP。首先是先ping一下ip.txt文件中的ip地址,判断机器是否正常;然后把安装lnmp脚本复制到多态服务器上/tmp/下,远程使用管理员权限,执行安装LNMP脚本,如果显示 all finish 则表示所有服务器安装都已完成。
-
ERROR - 2022-12-07 18:05:29 --> Severity: Warning --> fread(): SSL: Connection reset by peer /dev/third_party/huaweicloud-obs/vendor/guzzlehttp/psr7/src/Stream.php 231ERROR - 2022-12-07 17:32:56 --> Severity: error --> Exception: Argument 1 passed to Obs\ObsClient::Obs\Internal\{closure}() must be an instance of GuzzleHttp\Exception\RequestException, instance of GuzzleHttp\Exception\ConnectException given, called in /dev/third_party/huaweicloud-obs/vendor/guzzlehttp/promises/src/Promise.php on line 204 /dev/third_party/huaweicloud-obs/Obs/Internal/SendRequestTrait.php 640
-
【功能模块】composer php SDK 安装【操作步骤&问题现象】1、composer require huaweicloud/huaweicloud-sdk-php:3.0.54-rc 安装完成后如下图:1 图:2 代码中的依赖库 sdk 文件加载不上HuaweiCloud\SDK\ 这个文件夹加载不上是哪里没有配置好吗?【截图信息】图:1图:2【日志信息】(可选,上传日志内容或者附件)
-
【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
求助
-
### php标签 php常用标签如下: ?php //这里写php代码 ?> 以上方式是php最常见的使用标签方式。 PHP脚本标签 以上这种方式也是可以的。但是不推荐使用,因为这种方式通常是用来写javascript代码的。 短标签方式 ? //php代码 ?> 以上这种短标签方式也是可以的,但是现在php默认已经不支持了,即要想使用这种短标签方式需要在php的配置文件(php.ini)中找到 short_open_tag = Off //默认这里是关闭 更改为short_open_tag = On 重启服务就可以使用这种短标签方式了。如果是用的一些集成环境 比如:phpstudy 可能默认就已经开启了这种短标签方式。 ### php注释 PHP注释有两大类:单行注释和块注释(多行) 单行注释有两种 双斜杠:// //输出hello world 井号:# \#输出helloworld 块注释:/* 注释内容 */ /* 这里是注释 以下内容是某个业务逻辑 */ 块注释通常在函数(方法)的地方使用,形式如下 ``` /*`` ``* 函数功能`` ``* @param 参数解释`` ``* @return 返回值解释`` ``*`` ``* @author,作者`` ``* @2014-8-10`` ``*/ ``` 注意:PHP在解析PHP代码的时候,会跳过注释,不会保留注释信息。 要求:以后大家写的代码,必须要有注释。凡是有业务逻辑的地方,都必须使用注释详细说明。 ## PHP变量 ## 变量:可以变化值的东西 ### 定义变量 语法:$变量名 $name $school_number $age1 $age2 $3a = 'variable' //报语法解析错误!不合法变量!变量不能以数字开头! 变量命名规则 \1. 必须以$符号开始 \2. 变量名可以由字母,下划线和数字自由组合 \3. 不能以数字开头 \4. 可以是中文 \5. 变量命名通常需要见名之意 \6. 变量名字有多个单词组成的时候,可以使用两种方式 a) 驼峰法:schoolName b) 下划线:school_name \7. php中变量一般是在定义的时候就赋值 ## 常量 ## 一旦被定义,就不能被修改,只能被使用的“量”叫做常量。 语法如下: define('常量名',常量值); 常量使用的语法:直接使用常量名 常量的使用 1.某个值不需要变化的时候。某些数学常量如π 2.用于整个网站使用。 3.凡是能使用常量去做的事情都可以使用变量去替代。常量是用来规范数据保证数据不被修改。 常量命名规则 \1. 常量不能使用$符号 \2. 其他命名规则与变量基本一致 \3. 常量命名通常使用全部大写字母,多单词的常量都是使用下划线方式。 \4. 常量与变量一样都区分大小写 常量不能被修改和删除 PHP脚本执行结束后内存是如何处理的? 1.什么叫做PHP脚本执行结束? 指的是当PHP引擎将用户请求的某个PHP脚本文件(index.php)的最后一行PHP代码执行完毕,称之为脚本执行结束。 2.脚本结束后内存如何处理? PHP脚本所占用的所有内存都会被释放,被操作系统回收。 ## 数据类型 数据类型是针对各种(变量)的值而言,而不是针对变量本身。 PHP有三大数据类型:标量,复合,特殊 标量数据类型(简单数据类型) 整型:int或者integer,整数,包括正整数,负整数和0 $num = 5; //说num变量的数据类型,其实指的是num变量所指向的值5的数据类型 整型在系统内存中占4个字节保存数据。 PHP还支持定义其他进制:八进制和十六进制 八进制:数值以0开始,后面跟八进制序列 $num = 011; //十进制9 十六进制:数值以0x开始,后面跟十六进制序列 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f $num = 0x11; //十进制17 浮点型:float,double,精度 通常,float占用4个字节保存数据,单精度,表示7个精度 double占用8个字节保存数据,双精度,表示15个精度 实际上PHP中float也是占用8个字节保存数据。 $float = 1.0; //普通的带小数的浮点数 $float = 2.3e3;//科学计数法保存的浮点数 因为浮点数会丢失精度,所以通常不用浮点数比较大小。 什么情况下使用浮点型?什么情况下使用整型? 一般对于精度要求不是那么高的,但是数值又非常大的可以使用浮点数,其他情况下基本都不使用。 时间戳:从1970年到当前时间的秒数称之为时间戳(格林威治时间) PHP提供了一个函数:time()获得时间戳 PHP用来保存时间都是使用时间戳来处理,date函数可以将时间戳转化成时间 字符串:string,凡是带引号包好的字符都可以称之为字符串 PHP中字符串的表示方式有三种:单引号,双引号,定界符 //定界符这里暂时先不记录 单引号:将字符串用单引号包裹起来 双引号:将字符串用双引号包裹起来 单引号和双引号的区别? 区别有两点: 1. 双引号中能够使用更多的转义字符\r\n\t单引号:\' 双引号:\"\r\n\t 2. 双引号中能够解析PHP变量 布尔:bool和Boolean,布尔类型只有两个值true和false 哪些数据会被当做FALSE处理? 需要通过比较的形式来判断是否为false 0:整型0 0.0:浮点0 '0':字符串0 null:空 '':空字符串 复合数据类型:数组和对象 特殊数据类型如下: NULL:定义的变量的值为NULL或者变量被删除 资源:所有外部数据的操作全部称之为资源类型数据 如PHP操作数据库中,mysql_connect连接成功返回的一个结果称之为资源(连接资源) ## 系统预定义变量 系统定义的变量称之为预定义变量,预定义变量有9个 如下所示: $_POST:接收用户表单post方式提交的所有数据 $_GET:接收用户表单get方式提交的所有数据 $_REQUEST:接收用户get方式,post方式提交的数据,还有cookie数据 $_FILES:接收用户上传的文件信息 $_SESSION:存放session数据(存放在服务器) $_COOKIE:存放cookie数据(存放在浏览器) $GLOBALS:全局变量 $_SERVER:保存服务器信息 $_ENV:保存系统环境信息 ## 系统预定义常量 PHP_OS:操作系统内核 PHP_VERSION:当前PHP的版本 PHP_INT_SIZE:int类型所占的字节数 PHP_INT_MAX:int类型能表示的最大值 魔术常量:可以自动变化的常量 如下所示: __FILE__:当前脚本的文件路径(绝对路径) __LINE__:当前所在的行数 __DIR__:当前脚本所在的目录(PHP4以后才有) __FUNCTION__:当前函数的名字 __METHOD__:当前方法的名字(类中的函数) ## 可变变量 什么是可变变量? 通过一个得到一个变量的值,将该值再次当做一个变量名从而得到另外一个变量的值。 可变变量demo案例如下: ```shell //可变变量``$name` `= ``'张三疯'``;``$myname` `= ``'name'``;` `echo` `$``$myname``; ``//$myname的值为name name和前边的$符合组合成$name 最终输出上面$name的值为:张三疯 ``` ## 传值 变量间的赋值 变量间的传值分为两种:值传递和引用传递 值传递:将一个变量的值赋值一份,然后赋值给新的变量 传值demo: ```shell //普通传值``$a` `= 1;``//在变量空间开辟一块内存空间存1 存放1之后 会给1分配一个内存地址 假设改内存地址为1001 此时$a指向的内存地址为1001` `$b` `= ``$a``; ``//将$a的内存地址得到,复制出来一份 假设新地址还是1001 此时变量$b指向的内存地址是新复制出来的1001` `unset(``$a``); ``//删除$a之后 只是把一开始$a指向的1001的地址给删掉,$b指向的新的内存地址1001并不受任何影响` `echo` `$b``; ``//所以这里会输出:1 ``` 值传递特点:一个变量的变更不会影响另外一个变量的变更,因为每一个变量指向的内存地址是不一样的,注意:每一个内存地址都指向的值是不同的。 引用传递:将一个变量的地址赋值给新的变量 在给变量赋值的时候,使用地址符号&获得一个变量的地址。 引用传值demo ```shell //传地址``$str` `= 10; `` //内存空间开辟一块内存存放10 随机给10分配了一块内存地址 假设改地址为:10086 $str指向10086这个地址` `$str2` `= &``$str``; `` //$str2的值是引用了$str的内存地址,也就是说 $str2也是指向了$str的内存地址 即10086 此时$str和$str2指向同一个内存地址` `$str2` `= 110;`` //$str2指向的内存地址对应的值改为110之后,所以$str的值也会变成110,因为$str和$str2是指向的同一个内存地址,也就是说更改了其中任何一个变量的值 那么另外的变量的值也会跟着被改变` `echo` `$str``;`` //所以这里输出:110 ```
-
composer require obs/esdk-obs-php Using version ^3.21 for obs/esdk-obs-php ./composer.json has been updated Running composer update obs/esdk-obs-php Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires obs/esdk-obs-php ^3.21 -> satisfiable by obs/esdk-obs-php[3.21.6]. - obs/esdk-obs-php 3.21.6 requires guzzlehttp/guzzle 6.3.0 -> found guzzlehttp/guzzle[6.3.0] but it conflicts with your root composer.json require (^7.0.1). Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions. Installation failed, reverting ./composer.json and ./composer.lock to their original content.这个问题存在好久了,好多新项目中使用不了SDK,麻烦尽快升级下 guzzlehttp/guzzle 版本吧!
-
【功能模块】【操作步骤&问题现象】安装PHP5.4,安装对应ZendGuardLoader后,PHP找不到ZendGuardLoader路径;更换PHP5.5版本,依然如此。【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
用:composer require huaweicloud/huaweicloud-sdk-php:3.0.41-rc时报如下错误./composer.json has been createdRunning composer update huaweicloud/huaweicloud-sdk-phpLoading composer repositories with package informationUpdating dependenciesYour requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires huaweicloud/huaweicloud-sdk-php 3.0.41-rc, found huaweicloud/huaweicloud-sdk-php[dev-master, 3.0.1-beta, ..., 3.0.39-rc] but it does not match the constraint.Installation failed, deleting ./composer.json.
-
【功能模块】【操作步骤&问题现象】1、电脑win10下载PHP依赖包不成功2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
【功能模块】welink回调【操作步骤&问题现象】1、回调的加密和解密算法说明太简单了,看不懂具体步骤和具体参数,能否提供详细说明,或者提供php版本的算法代码示例如果能直接提供完整的sdk则是更加美好的事情
推荐直播
-
华为AI技术发展与挑战:集成需求分析的实战指南
2024/11/26 周二 18:20-20:20
Alex 华为云学堂技术讲师
本期直播将综合讨论华为AI技术的发展现状,技术挑战,并深入探讨华为AI应用开发过程中的需求分析过程,从理论到实践帮助开发者快速掌握华为AI应用集成需求的框架和方法。
回顾中 -
华为云DataArts+DWS助力企业数据治理一站式解决方案及应用实践
2024/11/27 周三 16:30-18:00
Walter.chi 华为云数据治理DTSE技术布道师
想知道数据治理项目中,数据主题域如何合理划分?数据标准及主数据标准如何制定?数仓分层模型如何合理规划?华为云DataArts+DWS助力企业数据治理项目一站式解决方案和应用实践告诉您答案!本期将从数据趋势、数据治理方案、数据治理规划及落地,案例分享四个方面来助力企业数据治理项目合理咨询规划及顺利实施。
去报名 -
大模型+知识库(RAG):如何使能行业数智化?—华为行业数字化转型实践分享
2024/11/27 周三 19:00-20:00
华为人工智能专家史老师
本次直播,我们特别邀请了华为人工智能专家史老师,将以大模型知识库为切入点,详细揭示大模型与知识库结合的过程,并分享利用大模型+知识库(RAG)使能行业数智化转型的实践经验。
即将直播
热门标签