Rumah php教程 php手册 IIS+php服务器无法上传图片解决办法

IIS+php服务器无法上传图片解决办法

Jun 13, 2016 am 11:25 AM
php.ini muat naik utama cara gambar pelayan ujian Tujuan selesaikan sediakan

主要目的就是测试我的php.ini没有设置upload_dir_tmp的值的时候,上传的文件临时保存在哪里的,经过这个测试发现原来在不配置php.ini的upload_dir_tmp的值的时候,默认的存储位置是在 C:windowstemp目录,并且临时文件是以.tmp为后缀存储的,该文件马上就会被删除,所以你想通过操作系统的文件修改搜索功能是无法找到的,也就无法找到upload_dir_tmp的默认路径是哪里。

IIS+php教程服务器无法上传图片解决办法

服务器上使用Apache2+PHP正常运行,换成IIS+PHP,先后出现了php.ini的环境变量无法读取,php中验证码无法显示的问题,如今又有人反应无法上传图片的问题。

   从IIS替换Apache2的过程仅仅是开启IIS,关闭Apache2,其它的没什么变化,但是却发生了如此多的差异,看样子IIS支持PHP还是有很多要进行修改的。

分析:

   根据上面的描述,我怀疑问题出在IIS的权限配置上,IUSR_MACHINE的帐户对upload没有写入的权限,于是进行权限修改,IIS下的权限,NTFS下的权限都进行修改,但是终究都没用,查找网络上的资料也没有相应的,对上传页面进行测试,流程为:

   swf文件调用save.php上传文件---->swf文件对上传的文件进行重命名--->名字返回给save.php--->显示出最后的名字。

   现在的问题一直停留在swf对文件重命名的这里,一直没有到显示出最后的名字,并且swf文件不参与上传过程,那就只能在save.php文件中进行问题查找了,在该文件中进行测试,最后显示的名字所使用的变量为fileName,于是插入下面的语句进行测试:

   echo "fileName=2008*****.gif";

   这句话的作用就是使得fileName有值,save.php能正常显示,先把原来的语句一句一句的进行屏蔽测试,都正常的返回了,但是当测试到:
    if (!@move_uploaded_file($f["tmp_name"], $dest_dir.'/'.$fileName)) header("HTTP/1.0 404 Not Found");
   这句话的时候问题出现了,不能上传,查找上下文,一直没发现tmp_name的变量,不过看意思是先把文件上传到一个临时文件,再挪动到目的位置,那这个tmp位置在哪里呢?是不是这个位置不可写,才导致了无法上传文件?

   查找网上资料,发现php.ini下面有2个地方关于上传的配置:
file_uploads = On                          这里设置是否允许HTTP上传,默认应该为ON的
   ;upload_tmp_dir=                          这里设置上传文件存放的临时位置

网上对于这2个地方的相关资料有:
I try to set up file uploading under IIS 7 and PHP 5.

First problem was to set 2 variables in php.ini

file_uploads = On           //这里是说php.ini文件这个地方设置成On

upload_tmp_dir = "C:Inetpubwwwrootuploads"    //这个路径就是自己设置的上传文件临时存储路径

For some reasons such directory name works,
but "upload_tmp" won't work.

The second problem was to set correct user rigths for upload folders where you try to save your file. I set my upload folder rights for the "WORKGROUP/users" for the full access. You may experiment by yourselves if you not need execute access, for example.

    我的php.ini中upload_tmp_dir是被注释的,没有启用,更没有设置,可是为什么Apache2却可以正常上传呢?难道问题真的出在这里?

解决:

   新建一个文件夹做临时上传目录,按照上面的英文说明修改php.ini中相应的那2项,把临时上传目录upload_tmp_dir设置成刚才建立的文件夹,把该文件夹的权限赋予“IUSR_计算机名”用户可写,重新启动IIS,上传试试,问题真的就这样解决了。


最终的分析答案:

   上面的内容写于09年,但是现在2010年7月我新增一台服务器,又出现了这个问题,同时再次按照上面的解决方法实施,在操作的过程中大概是由于哪里出了错,竟然没有成功,不得不抽出点时间来研究具体原因,找到了最终产生这个问题的原因如下。
    无法上传文件,不代表所有文件都无法上传,因为我的一个网站,flash调用fwrite()传头像之类的成功了,但是调用@move_uploaded_file($f["tmp_name"], $dest_dir.'/'.$fileName)这样的函数传照片的时候仍旧无法上传。
   经过我的分析,原因是由于fwrite()是传的二进制文件,而move_uploaded_file()传的是文本文件,而windows操作系统是区分这2种文件的 [参考php手册fwrite()函数的说明],这也就是说这2种不同的文件在php环境下上传时所存储的临时上传目录是不同的,由于在配置IIS环境下的PHP的时候,设置的临时目录为E:tmp,设置该目录的iusr用户可写,二进制文件即可上传,所以我怀疑该目录就是二进制文件上传临时文件的存储位置,那么move_uploaded_file()传的文本文件的临时文件存储位置在哪里呢?其实就是在上面的那段英文里面,upload_tmp_dir设置的路径就是了,但是我的几台服务器中,每台服务器的这个设置的值都是被注释掉的“no value”,为什么有的服务器可以上传,而有的服务器不可以上传呢?这也就回到了以前我提出的问题,为什么Apache2可以上传而iis不可以上传呢?
    这次我再次分析upload.php文件,分析其中造成该故障的代码具体内容如下:

// 检查是否有文件上传
    if (! $_FILES['upload'.$num]['name'] == ""){
      if ($_FILES['upload'.$num]['size']    1、 echo "文件上传路径:".$location.$_FILES['upload'.$num]['name'];
    2、echo "文件临时文件名:".$_FILES['upload'.$num]['tmp_name'];
    3、    move_uploaded_file($_FILES['upload'.$num]['tmp_name'],$location.$_FILES['upload'.$num]['name']) or $event = "Failure";
    } else {
     $event = "File too large!";
    }

   其中正常代码中第2句是不存在的,为了测试方便我加上来的,它的主要目的就是测试我的php.ini没有设置upload_dir_tmp的值的时候,上传的文件临时保存在哪里的,经过这个测试发现原来在不配置php.ini的upload_dir_tmp的值的时候,默认的存储位置是在 C:windowstemp目录,并且临时文件是以.tmp为后缀存储的,该文件马上就会被删除,所以你想通过操作系统的文件修改搜索功能是无法找到的,也就无法找到upload_dir_tmp的默认路径是哪里。

   既然找到了upload_dir_tmp的默认路径了,那么修改c:windowstemp的访问权限,赋予IUSR_用户可写,重启动IIS Admin服务,上传文件,终于成功了。这就是为什么我的多台服务器upload_dir_tmp的值都为空的时候有的可传,有的不可传的原因。


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menetapkan masa yang dijadualkan untuk menerbitkan karya di Douyin? Bagaimanakah ia menetapkan tempoh video? Bagaimana untuk menetapkan masa yang dijadualkan untuk menerbitkan karya di Douyin? Bagaimanakah ia menetapkan tempoh video? Mar 27, 2024 pm 06:11 PM

Menerbitkan karya di Douyin boleh menarik lebih banyak perhatian dan suka, tetapi kadangkala sukar bagi kami untuk menerbitkan karya dalam masa nyata Dalam kes ini, kami boleh menggunakan fungsi keluaran berjadual Douyin. Fungsi penerbitan berjadual Douyin membolehkan pengguna menerbitkan karya secara automatik pada masa yang dijadualkan, yang boleh merancang pelan keluaran dengan lebih baik dan meningkatkan pendedahan serta pengaruh karya tersebut. 1. Bagaimana untuk menetapkan masa yang dijadualkan untuk penerbitan karya di Douyin? Untuk menetapkan masa keluaran yang dijadualkan, mula-mula pergi ke halaman utama peribadi Douyin, cari butang "+" di penjuru kanan sebelah atas dan klik untuk memasuki halaman keluaran. Terdapat ikon jam di penjuru kanan sebelah bawah halaman penerbitan Klik untuk memasuki antara muka penerbitan yang dijadualkan. Dalam antara muka, anda boleh memilih jenis kerja yang ingin anda terbitkan, termasuk video pendek, video panjang dan siaran langsung. Seterusnya, anda perlu menetapkan masa untuk karya anda diterbitkan. TikTok menyediakan

Mod Jangan Ganggu Tidak Berfungsi dalam iPhone: Betulkan Mod Jangan Ganggu Tidak Berfungsi dalam iPhone: Betulkan Apr 24, 2024 pm 04:50 PM

Malah menjawab panggilan dalam mod Jangan Ganggu boleh menjadi pengalaman yang sangat menjengkelkan. Seperti namanya, mod Jangan Ganggu mematikan semua pemberitahuan panggilan masuk dan makluman daripada e-mel, mesej, dsb. Anda boleh mengikuti set penyelesaian ini untuk membetulkannya. Betulkan 1 – Dayakan Mod Fokus Dayakan mod fokus pada telefon anda. Langkah 1 – Leret ke bawah dari atas untuk mengakses Pusat Kawalan. Langkah 2 – Seterusnya, dayakan “Mod Fokus” pada telefon anda. Mod Fokus mendayakan mod Jangan Ganggu pada telefon anda. Ia tidak akan menyebabkan sebarang makluman panggilan masuk muncul pada telefon anda. Betulkan 2 – Tukar Tetapan Mod Fokus Jika terdapat beberapa isu dalam tetapan mod fokus, anda harus membetulkannya. Langkah 1 – Buka tetingkap tetapan iPhone anda. Langkah 2 – Seterusnya, hidupkan tetapan mod Fokus

Cara menetapkan tera air di tengah di Weibo_Cara menetapkan tera air di tengah di Weibo Cara menetapkan tera air di tengah di Weibo_Cara menetapkan tera air di tengah di Weibo Mar 29, 2024 pm 03:31 PM

1. Mula-mula masukkan Weibo, kemudian klik pada saya di sudut kanan bawah dan pilih [Khidmat Pelanggan]. 2. Kemudian masukkan [Watermark] dalam kotak carian dan pilih [Set Weibo Image Watermark]. 3. Kemudian klik [Pautan] dalam antara muka. 4. Kemudian klik [Tetapan Tera Air Imej] dalam tetingkap yang baru dibuka. 5. Akhir sekali, semak [Pusat Gambar] dan klik [Simpan].

Cara menyediakan penerbitan berjadual di Weibo_Tutorial tentang cara menyediakan penerbitan berjadual di Weibo Cara menyediakan penerbitan berjadual di Weibo_Tutorial tentang cara menyediakan penerbitan berjadual di Weibo Mar 29, 2024 pm 03:51 PM

1. Buka klien Weibo, klik tiga titik kecil pada halaman penyuntingan, dan kemudian klik Siaran Berjadual. 2. Selepas mengklik pada penerbitan berjadual, akan ada pilihan masa di sebelah kanan masa penerbitan Tetapkan masa, edit artikel dan klik perkataan kuning di sudut kanan bawah untuk menerbitkan secara kerap. 3. Versi mudah alih Weibo pada masa ini tidak menyokong penerbitan berjadual Fungsi ini hanya boleh digunakan pada klien PC!

Tempat untuk menetapkan cadangan dan pilihan Douyin Tempat untuk menetapkan cadangan dan pilihan Douyin Mar 27, 2024 pm 05:06 PM

Di manakah cadangan dan pilihan pada Douyin? Dalam video pendek Douyin, terdapat dua kategori: pemilihan dan pengesyoran Kebanyakan pengguna tidak tahu cara menyediakan cadangan dan pilihan Seterusnya ialah video pendek Douyin yang dibawa oleh editor kepada pengguna. Cadangan audio dan tutorial kaedah tetapan terpilih, pengguna yang berminat datang dan lihat! Tutorial penggunaan Douyin Tempat untuk menyediakan cadangan dan pilihan Douyin 1. Mula-mula buka APP video pendek Douyin dan masukkan halaman utama, klik pada kawasan [Saya] di sudut kanan bawah dan pilih [tiga garisan mendatar] di sudut kanan atas ; 2. Kemudian di sebelah kanan Bar fungsi akan berkembang, luncurkan halaman untuk memilih [Tetapan] di bahagian bawah 3. Kemudian pada halaman fungsi tetapan, cari perkhidmatan [Pengurusan Maklumat Peribadi] 4. Akhirnya lompat ke peribadi halaman pengurusan maklumat, slaid [Syor Kandungan Diperibadikan] 】Butang di bahagian belakang boleh ditetapkan.

Bagaimana untuk menetapkan kira detik untuk merebut tiket di Damai Bagaimana untuk menetapkan kira detik untuk merebut tiket di Damai Apr 01, 2024 pm 07:01 PM

Apabila membeli tiket di Damai.com, untuk memastikan masa pembelian tiket dapat difahami dengan tepat, pengguna boleh menetapkan jam terapung untuk merebut tiket Kaedah tetapan terperinci di bawah, mari kita belajar bersama. Cara mengikat jam terapung ke Damai 1. Klik untuk membuka aplikasi jam terapung pada telefon anda untuk memasuki antara muka, dan klik pada lokasi di mana cek jualan kilat ditetapkan, seperti yang ditunjukkan dalam rajah di bawah: 2. Selepas datang ke halaman menambah rekod baru, klik pada Damai.com Salin halaman pautan pembelian tiket yang disalin. 3. Seterusnya, tetapkan masa jualan kilat dan masa pemberitahuan di bawah, hidupkan butang suis di belakang [Simpan ke Kalendar] dan klik [Simpan] di bawah. 4. Klik untuk menghidupkan [Countdown], seperti yang ditunjukkan dalam rajah di bawah: 5. Apabila masa peringatan tiba, klik butang [Start Picture-in-Picture] di bawah. 6. Apabila tiba masa pembelian tiket

Sertai pengembaraan Xianxia baharu! Pramuat turun 'Zhu Xian 2' 'Wuwei Test' kini tersedia Sertai pengembaraan Xianxia baharu! Pramuat turun 'Zhu Xian 2' 'Wuwei Test' kini tersedia Apr 22, 2024 pm 12:50 PM

"Ujian Inaction" bagi MMORPG dongeng fantasi baharu "Zhu Xian 2" akan dilancarkan pada 23 April. Apakah jenis kisah pengembaraan dongeng baharu yang akan berlaku di Benua Zhu Xian beribu-ribu tahun selepas karya asal? The Six Realm Immortal World, akademi abadi sepenuh masa, kehidupan abadi percuma, dan semua jenis keseronokan di dunia abadi sedang menunggu rakan-rakan abadi untuk meneroka secara peribadi! Pra-muat turun "Wuwei Test" kini dibuka Rakan-rakan Fairy boleh pergi ke laman web rasmi untuk memuat turun Anda tidak boleh log masuk ke pelayan permainan sebelum pelayan dilancarkan sudah selesai. Waktu pembukaan "Zhu Xian 2" "Inaction Test": 23 April 10:00 - 6 Mei 23:59 Bab pengembaraan dongeng baharu sekuel ortodoks kepada Zhu Xian "Zhu Xian 2" adalah berdasarkan novel "Zhu Xian" sebagai cetak biru Berdasarkan pandangan dunia karya asal, latar belakang permainan ditetapkan

Bagaimana untuk menetapkan main balik Douyin untuk ditutup secara automatik? Mengapakah proses main balik secara automatik keluar? Bagaimana untuk menetapkan main balik Douyin untuk ditutup secara automatik? Mengapakah proses main balik secara automatik keluar? Apr 01, 2024 pm 12:06 PM

Douyin ialah salah satu platform video pendek yang paling popular hari ini Sambil menikmati keseronokan video pendek, pengguna juga berharap dapat mengawal masa mereka dengan lebih baik. Baru-baru ini, beberapa pengguna melaporkan bahawa Douyin akan ditutup secara automatik semasa main balik, yang sangat menyusahkan mereka. 1. Bagaimana untuk menetapkan main balik Douyin untuk dimatikan secara automatik? 1. Semak versi Douyin Sila pastikan versi Douyin yang anda gunakan adalah yang terkini. Douyin akan dikemas kini dengan kerap untuk menyelesaikan isu yang diketahui. Jika versi TikTok anda terlalu lama, ia mungkin ditutup secara automatik. Anda boleh menyemak dan mengemas kini TikTok di App Store. 2. Semak versi sistem telefon mudah alih Penutupan automatik main balik Douyin mungkin juga berkaitan dengan versi sistem telefon mudah alih. Sila pastikan versi sistem telefon mudah alih anda adalah yang terkini. Jika versi sistem telefon mudah alih terlalu lama, ia boleh menyebabkan Douyin berjalan tidak stabil. awak boleh

See all articles