5

I trying create new folder using PHP localhost/PhpProject3/create.php:

<?php mkdir('newdir', 0777); ?>

but this code doesn't do it. It also doesn't work :

<?php mkdir('/var/www/PhpProject3/newdir',0777); ?> 

I installed LAMP. I think the problem is in the settings (maybe chmod ?) because PHP script works. For example i create simple test.php:

<?php echo 'Great'; ?>

and run it: localhost/PhpProject3/test.php the result is Great.

I use Netbeans. Here are files: /var/www/PhpProject3 . I run it: localhost/PhpProject3/... The content of /etc/apache2/sites-available/default:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

I also can't create file using touch().

Can anyone help me ?

4

3 回答 3

13

Which user does your webserver run as? You can see that if you write

ps aux

and take a look. It is probably the user www-data (if you use ubuntu).

Then you chown the dir to that user and give the user write permissions to the directory.

chown www-data /var/www/PhpProject3

and

chmod u+w /var/www/PhpProject3

An alternative is to instead use group permissions.

chgrp www-data /var/www/PhpProject3

and

chmod g+w /var/www/PhpProject3

assuming the webserver runs as group www-data.

于 2013-05-04T11:53:44.097 回答
3

Hard to guess whats really the problem, I assume permissons or path problems. You should check the return value of mkdir():

if(!mkdir()) {
    print_r(error_get_last());
}

Further you should learn enable error messages. mkdir() would trigger one if it fails. They are disabled by default as it could be a security risk in a production system. But when you are developing you MUST enable them. You can enable it in the php.ini of development system:

php.ini:

...
display_errors=1
...
log_errors=1
...
error_log="/path/to/writable/file"
...
error_reporting=E_ALL

After modifying the php.ini don't forget to restart the web server.

于 2013-05-04T11:52:10.033 回答
-2

there is a private temp location in centos 7 that is very annoying sometimes with php especially the mkdir command

To disable this behavior, you can set PrivateTmp=false in /usr/lib/systemd/system/httpd.service

then systemctl daemon-reload; systemctl restart httpd

HTH.

于 2016-08-11T17:51:35.493 回答