Reputation: 1845
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 ?
Upvotes: 5
Views: 19158
Reputation: 1
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.
Upvotes: -2
Reputation: 158250
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.
Upvotes: 3
Reputation: 7322
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.
Upvotes: 13