上传目标文件夹似乎不可写.(Codeigniter)



我有两个上传脚本,它们在不同的目录下执行非常相似的功能。

function town_upload() {

        //Do not create a thumbnail
        $create_thumb = false;
        //Create the path for the upload
        $path = './public/uploads/towns/' . $this->uri->segment(3);
        $config['upload_path'] = $path;
        $config['allowed_types'] = 'jpg';
        $config['max_size'] = '2048';
        $config['max_width'] = '1024';
        $config['max_height'] = '768';
        $config['remove_spaces'] = TRUE;
        $config['overwrite'] = $this->image_upload_overwrite;
        if ($this->input->post('image_type') == 'main_image') {
            $config['file_name'] = 'main.jpg';
            $create_thumb = true;
        } 
        $this->load->library('upload', $config);
        if (!$this->upload->do_upload()) {
            $this->session->set_flashdata('upload_error', array('error' => $this->upload->display_errors()));
        } else {
            //sucess so now we create the thumbnail
            $this->session->set_flashdata('upload_success', $this->upload->data());

示例:如果我有一个ID为6的城镇,那么上传目录将是public/uploads/towns/6。这可以很好地工作,因为在创建城镇时创建了目录。除了路径是public/uploads/hotels/[ID]之外,我对酒店也有几乎完全相同的功能。我将权限设置为777只是为了将其从等式中移除。

我不能弄清楚,因为它们都是非常相似的函数。以下是酒店上传代码:

 function hotel_upload() {
        //Create the path for the upload
        $path = './public/uploads/hotels/' . $this->uri->segment(3);
        chmod($path, 0777);
        $config['upload_path'] = $path;
        $config['allowed_types'] = 'jpg';
        $config['max_size'] = '2048'; //kilobytes (2048 = 2mb)
        $config['max_width'] = '1024';
        $config['max_height'] = '768';
        $config['remove_spaces'] = TRUE;
        $config['overwrite'] = TRUE;
        if ($this->input->post('image_type') == 'main_image') {
            $config['file_name'] = 'main.jpg';
        }
        $this->load->library('upload', $config);
        if (!$this->upload->do_upload()) {
            $this->session->set_flashdata('upload_error', array('error' => $this->upload->display_errors() . ' <br/>Path: ' . $path . '<br/>Image Type: ' . $this->input->post('image_type')));
        } else {
            //sucess so now we create the thumbnail
            $this->session->set_flashdata('upload_success', $this->upload->data());

酒店功能给了我一个错误"上传目标文件夹不似乎是可写的".

以下是HTML表单的页面:

城镇:

<?php echo form_open_multipart('admin/town_upload/' . $this->uri->segment(3));?>
            <input type="file" name="userfile" size="20" />
            <br /><br />
            <p>
                <input type="radio" name="image_type" checked="checked" class="radio" value="main_image" /> <label>Main Image</label>
                <input type="radio" name="image_type" class="radio" value="other_image" /> <label>Other Image</label>
            </p>
            <input type="submit" class="submit short" value="upload" />
        <?php echo form_close(); ?> 

酒店:

<?php echo form_open_multipart('admin/hotel_upload/' . $this->uri->segment(3));?>
            <input type="file" name="userfile" size="20" />
            <br /><br />
            <p>
                <input type="radio" name="image_type" checked="checked" class="radio" value="main_image" /> <label>Main Image (shown when visitors search the website)</label>
                <input type="radio" name="image_type" class="radio" value="other_image" /> <label>Standard Image</label>
            </p>
            <input type="submit" class="submit short" value="upload" />
        <?php echo form_close(); ?> 

提前感谢!我已经为此工作了几个小时了…(

你的代码没有检查chmod工作。例如,默认情况下,apache喜欢以它自己的用户或任何人的身份运行,而不是以用户身份运行。所以,chmod在你的文件中可能会发现当前运行的用户不拥有这个文件,所以chmod失败。

我要检查的第一件事是用户PHP认为它是作为文件的所有者运行的。

有is_writable函数,可以检查目录是否可写

我刚刚遇到了同样的问题,并找到了这种行为的可能原因。在我的例子中,我不久前创建了上传目录。我升级了php,在新的php.ini文件中添加了safe_mod = On.,现在当我擦除目录后重新创建目录时,新的php参数开始抛出这个错误消息。

是否有可能在PHP升级之前创建了城镇目录树,然后创建了酒店目录树?

好了,回到这里。我想权限在某个地方搞砸了,我销毁并重新创建了文件夹,它似乎可以工作。

相关内容

  • 没有找到相关文章

最新更新