如果您对phpci.bin.gz文件上传解决思路感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于phpci.bin.gz文件上传解决思路的详细内容,我们还将为您解答php上传
如果您对php ci .bin.gz 文件上传解决思路感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于php ci .bin.gz 文件上传解决思路的详细内容,我们还将为您解答php上传文件类的相关问题,并且为您提供关于#!/usr/bin/env bash和#!/usr/bin/bash的比较、/ bin / bash:/ bin / java:没有这样的文件或目录、/bin,/sbin,/usr/sbin,/usr/bin 目录之简单区别、/bin/bash和/bin/sh解释器的误用引起的脚本语法错误的有价值信息。
本文目录一览:- php ci .bin.gz 文件上传解决思路(php上传文件类)
- #!/usr/bin/env bash和#!/usr/bin/bash的比较
- / bin / bash:/ bin / java:没有这样的文件或目录
- /bin,/sbin,/usr/sbin,/usr/bin 目录之简单区别
- /bin/bash和/bin/sh解释器的误用引起的脚本语法错误
php ci .bin.gz 文件上传解决思路(php上传文件类)
php ci .bin.gz 文件上传
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> function do_upload() { $config[''upload_path''] = ''./uploads/''; $config[''allowed_types''] = ''bin.gz''; //是不是这个类型错了? $this->load->library(''upload'', $config); if ( ! $this->upload->do_upload()) { $error = array(''error'' => $this->upload->display_errors()); $this->load->view(''upload_form'', $error); } else { $data = array(''upload_data'' => $this->upload->data()); $this->load->view(''upload_success'', $data); } }
错误信息是 You did not select a file to upload.
------解决方案--------------------
没有选择上传文件
是不是没有在表单中加 enctype= "multipart/form-data "
#!/usr/bin/env bash和#!/usr/bin/bash的比较
原博文:
stackoverflow:
http://stackoverflow.com/questions/16365130/the-difference-between-usr-bin-env-bash-and-usr-bin-bash
`#!/usr/bin/env bash` #lends you some flexibility on different systems
`#!/usr/bin/bash` #gives you explicit control on a given system of what executable is called
通过/usr/bin/env 运行程序,用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程序存放的位置可能不同),只要程序在你的$PATH中;
通过/usr/bin/env 运行程序另一个好处是,它会根据你的环境寻找并运行默认的版本,提供灵活性。
不好的地方是,有可能在一个多用户的系统中,别人在你的$PATH中放置了一个bash,可能出现错误。
大部分情况下,/usr/bin/env是优先选择的,因为它提供了灵活性,特别是你想在不同的版本下运行这个脚本;而指定具体位置的方式#! /usr/bin/bash,在某些情况下更安全,因为它限制了代码注入的可能。
/ bin / bash:/ bin / java:没有这样的文件或目录
我试图在Mac OS X EL Captain 10.11上使用Java 1.7
SDK和Hadoop2.7.1运行一个简单的单词计数MapReduce程序,并且在我的容器日志“ stderr” / bin /
bash中得到以下错误消息:/ bin / java:无此文件或目录
应用日志
5/11/27 02:52:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable15/11/27 02:52:33 INFO client.RMProxy: Connecting to ResourceManager at /192.168.200.96:803215/11/27 02:52:34 INFO input.FileInputFormat: Total input paths to process : 015/11/27 02:52:34 INFO mapreduce.JobSubmitter: number of splits:015/11/27 02:52:34 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1448608832342_000315/11/27 02:52:34 INFO impl.YarnClientImpl: Submitted application application_1448608832342_000315/11/27 02:52:34 INFO mapreduce.Job: The url to track the job: http://mymac.local:8088/proxy/application_1448608832342_0003/15/11/27 02:52:34 INFO mapreduce.Job: Running job: job_1448608832342_000315/11/27 02:52:38 INFO mapreduce.Job: Job job_1448608832342_0003 running in uber mode : false15/11/27 02:52:38 INFO mapreduce.Job: map 0% reduce 0%15/11/27 02:52:38 INFO mapreduce.Job: Job job_1448608832342_0003 failed with state FAILED due to: Application application_1448608832342_0003 failed 2 times due to AM Container for appattempt_1448608832342_0003_000002 exited with exitCode: 127For more detailed output, check application tracking page:http://mymac.local:8088/cluster/app/application_1448608832342_0003Then, click on links to logs of each attempt.Diagnostics: Exception from container-launch.Container id: container_1448608832342_0003_02_000001Exit code: 127Stack trace: ExitCodeException exitCode=127: at org.apache.hadoop.util.Shell.runCommand(Shell.java:545) at org.apache.hadoop.util.Shell.run(Shell.java:456) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722) at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)Container exited with a non-zero exit code 127Failing this attempt. Failing the application.15/11/27 02:52:38 INFO mapreduce.Job: Counters: 0
命令我正在运行
hadoop jar wordcount.jar org.myorg.WordCount /user/gangadharkadam/input/ /user/gangadharkadam/output/
我的ENV变量是-
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Homeexport HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.1export HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-2.7.1export HADOOP_COMMON_HOME=/usr/local/hadoop/hadoop-2.7.1export HADOOP_HDFS_HOME=/usr/local/hadoop/hadoop-2.7.1export YARN_HOME=/usr/local/hadoop/hadoop-2.7.1export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.7.1/etc/hadoopexport HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:HADOOP_HOME/sbin:$M2_HOME/bin:$ANT_HOME/bin:$IVY_HOME/bin:$FB_HOME/bin:$MYSQL_HOME/bin:$MYSQL_HOME/lib:$SQOOP_HOME/bin
问题似乎是因为YARN对JAVA可执行文件使用的路径与您在OS中使用的路径不同。“ stderr”中失败任务的本地日志显示-/ bin / bash:/
bin / java:没有这样的文件或目录
我尝试从$ JAVA_HOM / bin / java到/ bin / java创建一个软链接,但在El Captian OS
X中创建了一个软链接,但不允许创建软链接。New OS X EL Captian具有无根登录名,用户无法在某些受限制的文件夹(例如/ bin
/)中创建任何内容。非常感谢您对此问题的任何解决。
答案1
小编典典该答案适用于Hadoop 2.6.0及更低版本。禁用SIP并创建符号链接确实提供了一种解决方法。更好的解决方案是修复hadoop-
config.sh,以使其正确接收您的JAVA_HOME
在HADOOP_HOME/libexec/hadoop-config.sh
看看下面的,如果条件# Attempt to set JAVA_HOMEif it is not set
删除导出JAVA_HOME行中的多余括号,如下所示。改变这个
if [ -x /usr/libexec/java_home ]; then export JAVA_HOME=($(/usr/libexec/java_home))else export JAVA_HOME=(/Library/Java/Home)fi
至
if [ -x /usr/libexec/java_home ]; then // note that the extra parentheses are removed export JAVA_HOME=$(/usr/libexec/java_home)else export JAVA_HOME=/Library/Java/Homefi
进行此更改后,请重新启动纱线。
可以在这里找到更详细的信息https://issues.apache.org/jira/browse/HADOOP-8717,并且似乎Hadoop
3.0.0-alpha1是该修复程序的第一个发行版。
/bin,/sbin,/usr/sbin,/usr/bin 目录之简单区别
/bin,/sbin,/usr/sbin,/usr/bin 目录
这些目录都是存放命令的,首先区别下/sbin和/bin:
从命令功能来看,/sbin 下的命令属于基本的系统命令,如shutdown,reboot,用于启动系统,修复系统,/bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到。
从用户权限的角度看,/sbin目录下的命令通常只有管理员才可以运行,/bin下的命令管理员和一般的用户都可以使用。
从可运行时间角度看,/sbin,/bin能够在挂载其他文件系统前就可以使用。
而/usr/bin,/usr/sbin与/sbin /bin目录的区别在于:
/bin,/sbin目录是在系统启动后挂载到根文件系统中的,所以/sbin,/bin目录必须和根文件系统在同一分区;
/usr/bin,usr/sbin可以和根文件系统不在一个分区。
/usr/sbin存放的一些非必须的系统命令;/usr/bin存放一些用户命令,如led(控制LED灯的)。
转下一位网友的解读,个人认为诠释得很到位:
/bin是系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/sbin一般是指超级用户指令。主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr/bin 是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
如果新装的系统,运行一些很正常的诸如:shutdown,fdisk的命令时,悍然提示:bash:command not found。那么
首先就要考虑root 的$PATH里是否已经包含了这些环境变量。
可以查看PATH,如果是:PATH=$PATH:$HOME/bin则需要添加成如下:
PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
/bin/bash和/bin/sh解释器的误用引起的脚本语法错误
背景
下面的脚本,在Linux上运行良好,在SUNOS执行的时候报语法错误。
#! /bin/sh #支持fwu的使用fwu 不支持的使用fu PS_TYPE="ps -fwu" do_ps=`ps -fwu 2>/dev/null` if [ "$?" -eq 1 ] then PS_TYPE="ps -fu" fi OSTYPE=`uname -a | awk '{print substr($0,1,3)}'` SELF_PATH=$(cd `dirname $0`; pwd) #SELF_PATH=`dirname $0` SELF_NAME=`basename $0`
其实就是获取脚本的当前文件路径。
同样的一段shell脚本,在 Linux主机上运行良好, 但是在SUNOS上 却执行报错了
Syntax error at line 12: `SELF_PATH=$' unexpected
问题分析
于是把这行脚本单独拿出来单独执行,但OK。
一番折腾之后,是脚本解释器的问题.
查看主机的SHELL解释器类型
ocsdb02:[/oracle$]echo $SHELL /bin/bash ocsdb02:[/oracle$]
解决办法
将 第一行的 #! /bin/sh
调整为 #!/bin/bash
,重新执行OK了。
事实上 SUOS主机上的sh的软连接的配置:
LINUX主机上的 sh的软连接配置 (sh一般设成bash的软链)
所以才会在Linux上运行OK,在sunos上执行语法错误,sh解释器不支持bash下的一些操作
第二种方法 是修改主机的默认SHELL,即修改软连接为BASH。
知识点回顾
Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh).
Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。
Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。
Linux操作系统缺省的shell是Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。
GNU/Linux 操作系统中的 /bin/sh 是 bash(Bourne-Again Shell)的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash(Debian Almquist Shell) https://wiki.ubuntu.com/DashAsBinSh ,并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。
What you should use when writing scripts
If your script requires features only supported by bash,use #!/bin/bash.
But if at all possible,it would be good to make sure your script is POSIX-compatible,and use #!/bin/sh,which should always,quite reliably,point to the preferred POSIX-compatible system shell in any installation.
参考资料:
https://man.cx/bash
今天关于php ci .bin.gz 文件上传解决思路和php上传文件类的讲解已经结束,谢谢您的阅读,如果想了解更多关于#!/usr/bin/env bash和#!/usr/bin/bash的比较、/ bin / bash:/ bin / java:没有这样的文件或目录、/bin,/sbin,/usr/sbin,/usr/bin 目录之简单区别、/bin/bash和/bin/sh解释器的误用引起的脚本语法错误的相关知识,请在本站搜索。
本文标签: