PHP老项目启动时,如何避免常见坑点?
摘要:记录一个老PHP项目中遇到的还能记得的坑,后面要是还有兴趣研究研究PHP的话,或者又有哪些坑,就都记一记,有些东西真的是不去整就不知道,改起来虽然不难,但是找起来却不容易啊。┗|`O′|┛ 嗷~~
php所有版本的地址: https://windows.php.net/downloads/releases/archives/
访问控制器时省略了index.php报No input file specified.
解决:public/.htaccess下文件改为(RewriteRule行):
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>
Apache开启路由重写(一般默认开启了):
httpd.conf中mod_rewrite.so注释去掉。
阿里文件上传跨域
错误信息:
Access to XMLHttpRequest at 'http://xxxx.oss-cn-hangzhou.aliyuncs.com/file?uploads=' from origin 'http://localhost' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
require_once(): Failed opening required '../a.php' (include_path='.;C:\php\pear')
通过百度尝试以下,都没用:
1.可能由于你没有传完整php程序,或者php程序中的某个文件损坏,可能会报这个错误。去官网重新下载文件,是虚拟空间的请用官网支持的FTP工具上传php程序。
2.文件权限问题,可能文件或者文件夹权限设置错误引起的。
3.文件夹名含有中文,有时候中文文件夹名也可能引起这个错误,建议改成英文的。
4.修改php程序,这个方法我不推荐(因为有的php程序可能需要改很多很多)
5.修改php.ini配置文件。
通过测试,其在相同路径或者子路径是能生效的,也就是说它不识别../跳到上一个路径,那就直接使用路径常量定位到项目根路径,进行拼接,如:
require_once THINK_PATH.'\Library\Vendor\aliyunOss\autoload.php';
Can't use method return value in write context
错误位置
FILE: xxx\WWW\app\ThinkPHP\Library\Vendor\aliyunOss\src\OSS\OssClient.php LINE: 3384
这里是使用了阿里云OSS的phpsdk,目前的版本是(2.6.0 时间是:20221022),其文档上说支持PHP 5.3以上版本。
但很可惜那都是骗人的,然后换底版本的sdk(v2.2.4)。这个错就消失了。
Exception' with message '"xxxx.oss-cn-beijing.aliyuncs.com"bucket name is invalid' in
这是阿里云OSS的一个报错,这说明连上了呀。
这个是bucket名称错了,其值应该是这里的,(而不是像这种的xxx.oss-cn-beijing.aliyuncs.com):
关于文件上传
在php.ini中需要配置文件上传的最大值等,否则上传文件超出大小时$_FILES为空
;post的最大值 默认的post_max_size 为2M
post_max_size=1024M
;PHP页面运行的最大时间值,默认30秒
max_execution_time=300
;上传的最大值 默认为8M post_max_size 大于 upload_max_filesize 为佳
upload_max_filesize=1024M
;是否允许通过HTTP上传文件的开关。
